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. Спасибо за совет, с наилучшими пожеланиями

Леле

0 ответов

Другие вопросы по тегам