当我在其他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? 如果可以,请举一个小例子如何做。
答案 0 :(得分:4)
创建课程"模型"哪个对象将保留在主线程中并将其与QML连接。 创造"工人"在其他线程中执行您想要执行的操作的类,并将此类对象的更新发送到" Model"的对象。 class(默认连接应该做的伎俩)。 在其他方向"模型"应安排"工人"。
的任务通过这种方式,您将保持线程远离QML引擎。