1

假设我们有一个非常简单的 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();

例如,如果我想将 Rectangle 的颜色从 C++ 更改为白色,我应该如何进行。我的猜测是:

QQuickItem *window = viewer.rootObject();
window->setProperty("color", "#fff");

但所做的只是以下编译器错误:

invalid use of incomplete type 'struct QQuickItem'
forward declaration of 'struct QQuickItem'
4

2 回答 2

6

然后 QQuickItem 在您包含的标头中的某处前向声明,但不是完全限定的。这里有更多信息。

于 2012-12-02T13:46:05.760 回答
2
QObject *rootObject = (QObject *)viewer.rootObject();
rootObject->setProperty("color", "red");
于 2014-02-13T16:00:07.497 回答