c++再见世界

QML C++ Goodbye World

本文关键字:世界 再见 c++      更新时间:2023-10-16

我用QML创建了一个Hello World应用程序。现在我想学习如何从c++中修改"Hello World"到"Goodbye World"的文本。

qml看起来像这样:

import QtQuick 2.6
Rectangle {
    property alias mouseArea: mouseArea
    width: 360
    height: 360
    MouseArea {
        id: mouseArea
        anchors.fill: parent
    }
    Text {
        id: helloText
        anchors.centerIn: parent
        text: "Hello World"
    }
}

我试图遵循

https://wiki.qt.io/Introduction_to_Qt_Quick Integration_with_C.2B.2B_applications

但是运气不好。代码似乎不完整。例如,它省略带有省略号的信息,如下所示:

QDeclarativeContext *context = …;

我找不到QDeclarativeContext的头,即使它没有。我怀疑文档是旧的,但我不确定。

无论如何,我只是想看一个简单的例子,让我从一个c++程序中把文本从"Hello World"改为"Goodbye World"。

这段代码是为旧的QtQuick1 API编写的,它基于QGraphicsScene,现在已经过时,过时并且从Qt中删除了IIRC。

我建议不要与c++中的QML混合使用,我甚至会更进一步,称其为反模式,在99.9999%的情况下有更好的解决方案。您应该将c++和QML之间的交互保持为一个定义良好的API。

也就是说,仍然有可能找到对象并操纵它们的属性。你可以使用QQmlApplicationEngine::rootObjects()来访问根对象,从那里你可以findChild()任何对象你已经提供了一个objectName在QML方面,你可以使用QMetaObject:invokeMethod()(适用于QML功能太!),使用qobject_cast,设置属性和什么的。

所有这些技术都包含在文档中。