从其他QThread发送到QML的Q_PROPERTY



当我在其他 QThread 中使用 Q_PROPERTY 时,我出现错误:非法尝试连接到...这与 QML 引擎位于不同的线程中。

//myclass.cpp
Q_PROPERTY(QString FileReady READ GetFileReady NOTIFY FileReadyChanged)

这是在其他QThread中。在主线程中,我有QtQuick2ApplicationViewer和o连接Q_PROPERTY:

//main.cpp
    MyClass cObject1();
QThread cThread1;                     //create new thread
cObject1.DoSetup(cThread1);           //connect
cObject1.moveToThread(&cThread1);     //move work to other thread
viewer.rootContext()->setContextProperty("otherthread",&cObject); // propably bad line

如何将属性从其他线程中的 myclass 发送到主线程中的 QML?如果可以的话,举一个小例子来做

创建类"Model",该对象将保留在主线程中并将其与QML连接。创建"worker"类,该类在其他线程中执行您想要执行的操作,并将更新从此类的对象发送到"Model"类的对象(默认连接应该可以解决问题)。在其他方向上,"模型"应该为"工人"安排任务。

这样,您将使线程远离 QML 引擎。

相关内容

  • 没有找到相关文章

最新更新