gpt4 book ai didi

c++ - qml 从 C++ 设置文本属性

转载 作者:行者123 更新时间:2023-11-28 04:28:11 26 4
gpt4 key购买 nike

我正在使用 qt-creator 创建一个快速应用程序.qml 文件:

Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")

MenuBar {
Menu {
title: "File"
MenuItem { objectName: "buttonTest"
text: "Open"
onTriggered: m.open()}

MenuItem { text: "show data"
onTriggered: m.data()
}
MenuItem { text: "Close"
onTriggered: Qt.quit()}
}

}


Text {
id: name
text: qsTr("no of vertices :")
}
Text
{

text: "..........."
objectName: "textObject"

}
}

我想通过 C++ 类中的方法设置“textObject”的文本属性我尝试了以下代码:

void Mine::data()
{
QQmlApplicationEngine engine;
QObject *rootObject = engine.rootObjects().first();
QObject *qmlObject = rootObject->findChild<QObject*>("textObject");

qmlObject->setProperty("text", "Text from C++");

}

但它显示以下错误:断言:文件/usr/include/qt5/QtCore/qlist.h 中的“!isEmpty()”,第 345 行

有什么帮助吗?

最佳答案

您正在使用的引擎中没有任何内容,它实际上是当场创建的并且没有加载任何内容,因此根对象列表是空的。

您需要为您的 QML 代码引用您实际使用的 qml 引擎。在 main.cpp 中创建的,因此您必须在 main 之外使用它的类中传递并保留指向它的指针。

此外,请记住,从 C++ 进入 QML 几乎总是糟糕的设计。如果您只是尝试一些东西,那没关系,但在实际生产中,正确的做法是将 QML 连接到 C++。

关于c++ - qml 从 C++ 设置文本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com