【问题标题】:How do I interact with QML from C++ in QtQuick 2.0如何在 QtQuick 2.0 中从 C++ 与 QML 交互
【发布时间】:2012-12-02 11:15:18
【问题描述】:

假设我们有一个非常简单的 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++ 更改为白色,我应该如何进行。我的猜测是:

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

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

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

【问题讨论】:

  • 您是否包含 QQuickItem?
  • @LucaCarlon :D 非常感谢。从来没有想过。

标签: c++ qt qml qt-quick qt5


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    QObject *rootObject = (QObject *)viewer.rootObject();
    rootObject->setProperty("color", "red");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多