3

我需要关于我的简单QT/QML应用程序的建议。

我有以下情况:

关于界面,我有一个名为“flickableArea”(flickableArea.qml)的主要区域,分为四个区域(item slot1、item slot2、item slot3和 item 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"
                }
            }

        }
    }
}

当在 c++ 代码中触发定义的信号时,我应该在area1area2area3area4中动态插入 QML 对象。在 c++ 代码上,当信号被触发时,我运行以下代码来创建一个连接到 Object.qml 的新对象 (ObjectToIntroduce):

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

在我创建了一个新的 ObjectToIntroduce 之后,如何在 flickableArea.qml 的 area1/area2/area3/area4 中引入/销毁(查看/隐藏)Object.qml?

我想知道实现这种机制的最佳方式是什么,编写这个简单的 Qt/Qml 应用程序。感谢您的建议,最好的问候

乐乐

4

0 回答 0