Russian Qt Forum

Qt => Qt Quick => Тема начата: Silver_swift от Март 16, 2012, 15:44



Название: Вопрос новичка, отображение различных элементов внутри одного.
Отправлено: 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, если я правильно понял вашу задачу.