• 80阅读
  • 0回复

C++中读写qml对象的属性UI显示不更新问题 [复制链接]

上一主题 下一主题
在线971586331
 

只看楼主 倒序阅读 楼主  发表于: 01-14
各位大佬,C++读写qml属性问题已经困扰我几天了,我按官网上的方法(https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html),用QQmlComponent创建对像,用findChild查找到对象后,用setProperty设置属性的值,如设置Label的text,qml文件中Label的onTextChanged已经触发了,打印text也已经改变了,但ui的显示不更新是什么原因呢?如果我在C++中读Label的text值一直读到的是初始值,text改变了读到的值不会变。这是什么原因啊
如果我想在C++中设置或获得一个Label控件的text值,该怎么做呢。
  1. mainwindow::mainwindow(QObject *parent) : QObject(parent)
  2. {
  3.     QQmlEngine *page2_engine = new QQmlEngine;
  4.     QQmlComponent *component = new QQmlComponent(page2_engine, "qrc:/Page2Form.ui.qml");
  5.     page2_obj = component->create();
  6.     led_obj = page2_obj->findChild<QObject*>("led");
  7.     data_2_obj = page2_obj->findChild<QObject*>("data_2");
  8.     warm1_obj = page2_obj->findChild<QObject*>("warm1");
  9. }
  10. void mainwindow::button_test()
  11. {
  12.     static int index = 0;
  13.     qDebug("button_test()");
  14.     warm1_obj->setProperty("text", index);
  15.         index ++;
  16. }

  1. Label {
  2.                 id: lable1
  3.                 objectName: "warm1"
  4.                 text: qsTr("预热状态:")
  5.                 onTextChanged: {
  6.                     console.log("text = ", text)
  7.                 }
  8.             }


快速回复
限100 字节
 
上一个 下一个