Допустим, у нас есть очень простой файл 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'
Затем QQuickItem был заранее объявлен где-то в заголовке, который вы включили, но не полностью квалифицирован. Вот Дополнительная информация.
QObject *rootObject = (QObject *)viewer.rootObject();
rootObject->setProperty("color", "red");