如何从C修改QML文本
发布时间:2020-12-16 09:40:09 所属栏目:百科 来源:网络整理
导读:我是Qt的新手,我正在尝试从C代码修改QML文本(在屏幕上显示). 我修改了文本,但没有在屏幕上更新,所以我修改了文本变量,但是屏幕上的第一个文本. 这是代码: //main.cpp #include QApplication#include QDeclarativeEngine#include QDeclarativeComponent#incl
我是Qt的新手,我正在尝试从C代码修改QML文本(在屏幕上显示).
我修改了文本,但没有在屏幕上更新,所以我修改了文本变量,但是屏幕上的第一个文本. 这是代码: //main.cpp #include <QApplication> #include <QDeclarativeEngine> #include <QDeclarativeComponent> #include <QDeclarativeItem> #include <QDebug> #include "qmlapplicationviewer.h" Q_DECL_EXPORT int main(int argc,char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc,argv)); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/textModification/main.qml")); viewer.showExpanded(); QDeclarativeEngine engine; QDeclarativeComponent component(&engine,QUrl::fromLocalFile("qml/textModification/main.qml")); QObject *object = component.create(); QObject *item = qobject_cast<QDeclarativeItem*>(object); QObject *text = item->findChild<QObject*>("text1"); qDebug() << "Text of 'text1' when it's created' -------->" << text->property("text"); text->setProperty("text","THIS WORKS!"); qDebug() << "Text of 'text1' after modifying it -------->" << text->property("text"); return app->exec(); } //main.qml import QtQuick 1.0 Item { id: item1 objectName: "item1" width: 400 height: 400 Text { id: text1 objectName: "text1" x: 0 y: 0 width: 400 height: 29 text: "This text should change..." font.pixelSize: 12 } } 有人能帮助我吗? 谢谢. 解决方法
这可能不如使用objectName属性查找对象那么灵活,但这很简单.
main.cpp中 #include <QtGui/QApplication> #include "qmlapplicationviewer.h" #include <QGraphicsObject> int main(int argc,char *argv[]) { QApplication app(argc,argv); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/TextTest/main.qml")); QObject *rootObject = viewer.rootObject(); rootObject->setProperty("text1Text",QVariant("Change you text here...")); viewer.showExpanded(); int returnVal = app.exec(); delete rootObject; return returnVal; } main.qml import QtQuick 1.0 Item { id: item1 width: 400 height: 400 property alias text1Text: text1.text Text { id: text1 width: 400 height: 29 color: "red" text: "This text should change..." font.pixelSize: 12 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |