使用 QThread::create
定义信号 signals 通知 ui 更新数据
signals:
void started();
void finished(QString text);
创建线程
QThread *thread = QThread::create([=](){
QThread::msleep(5000); //模拟耗时任务
});
connect(thread, &QThread::started, [=](){
qDebug() << "=========线程开始执行(5s)===";
emit started();
});
connect(thread, &QThread::finished, [=](){
qDebug() << "线程执行完成==============";
emit finished("hello");
thread->deleteLater();
});
thread->start();
示例代码
Button {
text: "newThread"
onClicked: _model.newThread() //启动线程
}
Loading {
id: loading
anchors.centerIn: parent
}
Timer {
id: timer
interval: 1000
onTriggered: {
if (!connect.isOk) {
loading.open() //开启loading
}
}
}
Connections {
id: connect
property bool isOk: false
target: _model
function onStarted() {
isOk = false
timer.start()
}
function onFinished(text) {
isOk = true
loading.close() //关闭loading
console.log("result, text = " + text)
}
}