Переключение между двумя обьектами класса
Всем привет.
Пытаюсь решить такую задачу, в main.qml есть 4 контента с которыми надо работать.
CircleTimerContent //Заполнение данными из файла CircleTimerContent { id:circletimercontent anchors.top: parent.top anchors.topMargin: dp(125) anchors.horizontalCenter: parent.horizontalCenter width: dp(130) height: dp(130) } CircleTimerContent //Заполнение данными из файла CircleTimerContent { id:circletimercontent2 anchors.top: circletimercontent.bottom anchors.right: circletimercontent.left anchors.left: parent.left anchors.topMargin: dp(10) anchors.horizontalCenter: parent.horizontalCenter } ToolBarContent //Заполнение данными из файла ToolBarContent { id: toolbarcontent onChecked: { settimecontent.flag = check circletimercontent.flag = check circletimercontent2.flag = check } } SetTimeContent //Заполнение данными из файла SetTimeContent { id:settimecontent anchors.top: toolbarcontent.bottom anchors.topMargin: dp(5) }
Первые 2 это объекты одного класса, работают одинаково. На третьем располагается переключатель который меняет режимы для выше описанных 2 объектов. На 4 находится объект на котором есть текстовая надпись и поле ввода.
Описание CircleTimerContent.qml
import QtQuick 2.0 import CircleTimer 1.0 CircleTimer { id: circletimer property alias flag: circleTimerClicked.flag Text { id: texttimer anchors.centerIn: parent font.bold: true font.pixelSize: 15 } onCircleTimeChanged: { texttimer.text = Qt.formatTime(circleTime, "hh:mm:ss") } MouseArea { id: circleTimerClicked anchors.fill: parent property bool flag: true onClicked: { if(circletimer.isClickedTimer(circleTimerClicked.width, circleTimerClicked.height, mouse.x, mouse.y)) { if(circleTimerClicked.flag === false) { console.log("bla bla") } else { if (circletimer.isRunning()) { circletimer.stop(); } else { circletimer.start(); } } } } } }
Здесь есть 2 режима, это если флаг один то мы может работать с таймерами а если другой то что то посылать во внешку.
Данные из SetTimerContent.qml
Item { id: timerValue property alias flag: testtext.flag Label { id: labeltext text: "Timer: " width: 50 } TextField { id:testtext inputMask: ("NN:NN") text: "00:00" anchors.left: labeltext.right width: 55 property bool flag: true readOnly: flag Keys.onPressed: { console.log(event.key) if(event.key === Qt.Key_Enter || event.key === Qt.Key_Return) { circletimercontent.timerValue = testtext.text circletimercontent.testTimerValue = testtext.text circletimercontent.clear(); } } } }
Здесь на минимуме что я пытаюсь сделать так это при нажатии на один из объектов CircleTimerContent послать в поле labletext.text (так мне кажется возможно реализовать) id выбранного объекта. То есть в label будет содержатся название или circletimercontent или circletimercontent2. Этим мы будем определять что было выбрано.
На максимуме я хочу чтобы при выборе одного из объектов из поля testtext.text уже заданные данные посылались именно в выбранный объект CircleTimerContent.
Я думаю что если пойму как решить минимальную задачу с надписью то второе уже будет близким по решению и решить смогу сам. Но вот примерно как с надписью при выборе очень плохо понятно(
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 10:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 8:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 8:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Вот небольшой пример на эту тему, чтобы можно было выбирать какой-то целевой объект с помощью идентификаторов. В этом случае также необходимо использовать сигналы и обработчики сигналов. Ну а в CircleTimer объектах можно сделать также property alias для свойств text. Вместо них в примере даны Rectangle.
main.qml
SetTimerContent.qml