Переключение между двумя обьектами класса
Всем привет.
Пытаюсь решить такую задачу, в 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 хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Ora Iro
- Жел. 24, 2024, 3:38 Т.Ж.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:40ұпай,
- Бағалау ұпайлары-8
- Akiv Doros
- Қар. 11, 2024, 11:58 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:50ұпай,
- Бағалау ұпайлары-4
- molni99
- Қаз. 25, 2024, 10:37 Т.Қ.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:80ұпай,
- Бағалау ұпайлары4
Вот небольшой пример на эту тему, чтобы можно было выбирать какой-то целевой объект с помощью идентификаторов. В этом случае также необходимо использовать сигналы и обработчики сигналов. Ну а в CircleTimer объектах можно сделать также property alias для свойств text. Вместо них в примере даны Rectangle.
main.qml
SetTimerContent.qml