Название: Вопрос новичка, отображение различных элементов внутри одного. Отправлено: Silver_swift от Март 16, 2012, 15:44 Здравствуйте, коллеги!
Начал осваивать QML. Сейчас пробую написать программу которая должна последовательно показывать несколько различных... <чего-то аналогичного QWidget> внутри родительского окна и после запускать алгоритм на С++. В Qt я бы описал нужные классы и по нажатию на кнопку создавал бы новый виджет, помещал его на место старого, а старый вычищал из памяти. Похожего механизма в QML (позволяющего динамически создать новый элемент и поместить его на место старого) я не нашел. Если я создам нужные элементы, помещу их один над другим и буду по нажатию на кнопку последовательно делать видимым только один элемент, это будет нормальным решением? Как обычно такие вещи делаются на QML? Название: Re: Вопрос новичка, отображение различных элементов внутри одного. Отправлено: kvrus от Март 19, 2012, 07:29 В QML есть механизм динамически управлять объектами, но только через *.JS
например у меня вот такие функции: var component; var element; function createSpriteObjects(qmlElement) { component = Qt.createComponent(qmlElement); if (component.status == Component.Ready) finishCreation(qmlElement); else component.statusChanged.connect(finishCreation); } function finishCreation(qmlElement) { if (component.status == Component.Ready) { if (qmlElement == "MYELEMENT.qml") { element = component.createObject(MYPARENTELEMENT, {"x": 100, "y": 100}); if (element == null) console.log("Error creating object"); linesArray.push(element); // } } else if (component.status == Component.Error) { console.log("Error loading component:", component.errorString()); } } тут самое главное - это складывать динамические элементы в массив linesArray.push(element); чтобы они не потерялись. В последствии через массив можно менять свойства элементов. При удалении элементов они удаляются и из массива. Название: Re: Вопрос новичка, отображение различных элементов внутри одного. Отправлено: Странник от Март 20, 2012, 09:41 PageStackWindow, если я правильно понял вашу задачу.
|