Переключение между двумя обьектами класса
Всем привет.
Пытаюсь решить такую задачу, в 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.
Я думаю что если пойму как решить минимальную задачу с надписью то второе уже будет близким по решению и решить смогу сам. Но вот примерно как с надписью при выборе очень плохо понятно(
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Вот небольшой пример на эту тему, чтобы можно было выбирать какой-то целевой объект с помощью идентификаторов. В этом случае также необходимо использовать сигналы и обработчики сигналов. Ну а в CircleTimer объектах можно сделать также property alias для свойств text. Вместо них в примере даны Rectangle.
main.qml
SetTimerContent.qml