Q_PROPERTY从其他QThread发送变量到QML

时间:2014-04-02 15:00:05

标签: qt qml qt5

当我在其他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? 如果可以,请举一个小例子如何做。

1 个答案:

答案 0 :(得分:4)

创建课程"模型"哪个对象将保留在主线程中并将其与QML连接。 创造"工人"在其他线程中执行您想要执行的操作的类,并将此类对象的更新发送到" Model"的对象。 class(默认连接应该做的伎俩)。 在其他方向"模型"应安排"工人"。

的任务

通过这种方式,您将保持线程远离QML引擎。