qt — Как мне взаимодействовать с QML из C ++ в QtQuick 2.0

Допустим, у нас есть очень простой файл 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'

1

Решение

Затем QQuickItem был заранее объявлен где-то в заголовке, который вы включили, но не полностью квалифицирован. Вот Дополнительная информация.

6

Другие решения

QObject *rootObject = (QObject *)viewer.rootObject();
rootObject->setProperty("color", "red");
2

По вопросам рекламы [email protected]