。
当我在其他 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 引擎。