我需要关于我的简单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++ 代码中触发定义的信号时,我应该在area1、area2、area3和area4中动态插入 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 应用程序。感谢您的建议,最好的问候
乐乐