0
我是QML的新手,無法解決一個簡單的問題。我想從C++訪問QML組件,但我不能。 指針test
總是0.可能是什麼原因?從C++訪問現有的QML組件
的代碼如下:
的main.cpp
int main(int argc, char *argv[])
{
QGuiApplication &app=reg6::Bonder::BonderGuiApplication::instance();
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QObject* test=engine.rootObjects().first()->findChild<QObject*> ("cameraArea");
test->setProperty("color","black");
return app.exec();
}
main.qml
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 1800
height: 900
SplitView
{
anchors.fill: parent
orientation: Qt.Vertical
SplitView {
Layout.fillHeight: true
SplitView {
orientation: Qt.Vertical
width:400
Layout.minimumWidth: 400
Layout.maximumWidth: 500
Camera {
id: cameraArea
height: 400
Layout.maximumHeight: 400
Layout.minimumHeight: 300
}
List {
id: listArea
}
}
Bonder {
id: mainArea
Layout.fillWidth: true
}
Properties {
id: propertiesArea
Layout.minimumWidth: 300
Layout.maximumWidth: 400
}
}
Error {
id: errorArea
Layout.minimumHeight: 100
height: 200
}
}
}
Camera.qml
import QtQuick 2.5
Rectangle {
color: "lightblue"
}
我想回答這樣的問題可以沒有來自文檔的**警告**是完整的。它只是鏈接標題上方的段落[here](http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html#accessing-members-of-a-qml-object-type-from -C)。它始於:**警告:** *雖然可以使用C++訪問和操作深入對象樹中的QML對象,但我們建議您不要在應用程序測試和原型設計之外採用此方法。 ] * – derM
@derM事實上,相反的方式要好得多。 –
@derM你是對的,但它不回答問題** Lecko **問,所以現在的答案是完整的。 – Redanium