我的项目中有两个QML文件。
main.qml:
Window{
width: 800
height: 500
visible: true
id:mainWinenter
Item {
id: inlinecomponent
Rectangle {
id: display
width: 50; height: 50
color: "blue"
}
}
MouseArea {
anchors.fill: parent
onClicked: {
var component = Qt.createComponent("qrc:/Test.qml");
var object = component.createObject(inlinecomponent, {"x": 50, "y": 50});
}
} }
和我的Test.qml文件:
Item{
id:mc
Rectangle{
x: 0
y: 0
id: rec
width: 150; height:75
color: "grey"
objectName: "recc"
visible: true
}}
main.cpp中:
int main(int argc, char *argv[]){
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QQuickView view;
view.setSource(QUrl("qrc:/Test.qml"));
QQuickItem *object = view.rootObject();
QObject *rect = object->findChild<QObject*>("recc");
if (rect)
rect->setProperty("color", "red");
view.show();
return app.exec();}
在main.cpp中,我使用setProperty函数来更改Test.qml文件中矩形的颜色。我在新窗口中加载文件时颜色会发生变化,但在main.qml文件中加载时它不会更改。如何在main.qml加载时更改它?
我的输出包含两个窗口。一个用于main.qml,另一个用于Test.qml。
我的Test.qml窗口中的矩形颜色为红色,但在main.qml中加载灰色。我想在主文件中加载红色,我想用我的cpp代码执行此操作。