Russian Qt Forum
Ноябрь 05, 2024, 14:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос новичка, отображение различных элементов внутри одного.  (Прочитано 2928 раз)
Silver_swift
Гость
« : Март 16, 2012, 15:44 »

Здравствуйте, коллеги!

Начал осваивать QML. Сейчас пробую написать программу которая должна последовательно показывать несколько различных... <чего-то аналогичного QWidget>  внутри родительского окна и после запускать алгоритм на С++.

В Qt я бы описал нужные классы и по нажатию на кнопку создавал бы новый виджет, помещал его на место старого, а старый вычищал из памяти. Похожего механизма в QML (позволяющего динамически создать новый элемент и поместить его на место старого) я не нашел. Если я создам нужные элементы, помещу их один над другим и буду по нажатию на кнопку последовательно делать видимым только один элемент, это будет нормальным решением? Как обычно такие вещи делаются на QML?

Записан
kvrus
Гость
« Ответ #1 : Март 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);  чтобы они не потерялись.
В последствии через массив можно менять свойства элементов. При удалении элементов они удаляются и из массива.

Записан
Странник
Гость
« Ответ #2 : Март 20, 2012, 09:41 »

PageStackWindow, если я правильно понял вашу задачу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 21.