Qt — Как динамически вставлять объекты Qml из класса C ++

Мне нужен совет о моем простом QT / QML приложение.

У меня следующая ситуация:

Что касается интерфейса, у меня есть основная область под названием «flickableArea» (flickableArea.qml), разделенная на четыре области (элемент slot1, вещь SLOT2, вещь Slot3 и предмет slot4).

Каждый слот заполнен объектом QML Rectangle.

slot1 заполнено прямоугольником с id =area1, SLOT2 заполнено прямоугольником с id =AREA2, Slot3 заполнено прямоугольником с id =AREA3, slot4 заполнено прямоугольником с id =area4

ФАЙЛ flickableArea.qml

import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4

Item {

property alias mainGrid: mainGrid
property alias slot1: slot1
property alias slot2: slot2
property alias slot3: slot3
property alias slot4: slot4

id: flickableAreaItem
width: 600
height: 300

Flickable {
id: flickableArea
boundsBehavior: Flickable.DragOverBounds
interactive: true
flickableDirection: Flickable.HorizontalFlick
anchors.fill: parent

GridLayout {
id: mainGrid
columnSpacing: 3
rowSpacing: 3
rows: 2
columns: 2
anchors.fill: parent

Item {
id: slot1
Layout.fillWidth: true
Layout.fillHeight: true
clip: false
Rectangle {
anchors.fill: parent
border.width: 1
border.color: "black"}
}

Item {
id: slot2
Layout.fillWidth: true
Layout.fillHeight: true
clip: false
Rectangle {
anchors.fill: parent
border.width: 1
border.color: "black"}
}

Item {
id: slot3
Layout.fillWidth: true
Layout.fillHeight: true
clip: false
Rectangle {
anchors.fill: parent
border.width: 1
border.color: "black"}
}

Item {
id: slot4
Layout.fillWidth: true
Layout.fillHeight: true
clip: false
Rectangle {
anchors.fill: parent
border.width: 1
border.color: "black"}
}

}
}
}

Я должен динамически вставлять объекты QML в area1, AREA2, AREA3 а также area4 когда определенный сигнал запускается в коде c ++.
В коде c ++, когда сигнал срабатывает, я запускаю следующий код, чтобы создать новый объект (ObjectToIntroduce), связанный с Object.qml:

ObjectToIntroduce *obj;
obj = new ObjectToIntroduce();
QQmlContext *objContext = engine->rootContext();
objContext->setContextProperty("obj", obj);

После того, как я сделал новый ObjectToIntroduce, как я могу представить / уничтожить (просмотреть / скрыть) Object.qml в area1 / area2 / area3 / area4 из flickableArea.qml?

Я хочу знать, как лучше всего реализовать этот механизм при написании этого простого приложения на Qt / Qml.
Спасибо за совет, с наилучшими пожеланиями

Леле

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]