QML函数在哪个线程中运行?

时间:2019-11-26 22:15:51

标签: qt qml

我想知道qml函数是否在主线程中运行?

c ++信号与qml插槽之间的连接是直接还是排队?

1 个答案:

答案 0 :(得分:0)

qml 函数在主循环中运行。看看这里: https://marketplace.qt.io/products/main-loop-wdt-for-qt-qml

关于 C++ 信号和 QML 插槽,我不确定。我假设它是 Qt::AutoConnection,但我使用的是代理信号:

signals:
void dateChanged();
void _dateChanged();
...
  connect(this,&Utils::_dateChanged,this,&Utils::dateChanged, Qt::QueuedConnection );
..
QtConcurrent::run([=]() {
...
  emit _dateChanged();
});

两个选项都有效:

      Utils{
            id:utils
            onDateChanged: { //DIRECT CONNECTION
                console.log("FROM MAINLOOP CHANGED")
            }
            on_DateChanged: { //QUEUED CONNECTION ??
                console.log("FROM THREAD CHANGED")
            }
        }