[英]qml set text property from c++
我正在使用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++");
}
但是它显示以下错误:ASSERT:文件/usr/include/qt5/QtCore/qlist.h,第345行中的“!isEmpty()”
有什么帮助吗?
您正在使用的引擎没有任何内容,它是从字面上直接创建的,并且没有加载任何内容,因此根对象列表为空。
您将需要引用实际用于QML代码的qml引擎。 在main.cpp
创建的一个,因此您必须在main之外使用它的类中传递并保留指向它的指针。
另外,请记住,从C ++到QML几乎总是不好的设计。 如果您只是尝试一些东西,那没关系,但是在实际生产中,正确的做法是将QML连接到C ++。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.