假设我们有一个非常简单的QML文件,就像这样:
import QtQuick 2.0
Rectangle {
width: 800
height: 600
color: '#000'
Text {
text: qsTr("Hi all")
anchors.centerIn: parent
}
}
QML文件加载了QtQuick2ApplicationViewer助手类,如下所示:
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/MyApp/Login/Window.qml"));
viewer.showFullScreen();
如果我想从C ++中将Rectangle的颜色更改为白色,我该怎么办?我的猜测是:
QQuickItem *window = viewer.rootObject();
window->setProperty("color", "#fff");
但所有这一切都是以下编译器错误:
invalid use of incomplete type 'struct QQuickItem'
forward declaration of 'struct QQuickItem'
答案 0 :(得分:6)
然后QQuickItem在你包含的标题中向前声明,但不完全合格。 Here了解更多信息。
答案 1 :(得分:2)
QObject *rootObject = (QObject *)viewer.rootObject();
rootObject->setProperty("color", "red");