91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

qt 線程與ui線程同步

發布時間:2020-07-05 13:45:19 來源:網絡 閱讀:1060 作者:WZM3558862 欄目:開發技術


QT UI 與線程同步

目前只會一種,采用信號槽機制。
通常情況下,信號和槽機制可以同步操作,這就意味著在發射信號的時候,使用直接函數即可以立刻調用連接到一個信號上的多個槽。
然而,當連接位于不同線程中的對象時,這一機制就會變得不同步起來,可以通過修改QObject::connect()的第5個可選參數而改變。
connect的第五個參數Qt::QueuedConnection表示槽函數由接受信號的線程所執行,如果不加表示槽函數由發出信號的次線程執行。
當傳遞信號的參數類型不是QT的元類型時要先注冊,關于QT的元類型可以參看QT文檔

QMetaType

這個類里面列舉了所有的元類型。
以QString為例,注冊時首先Q_DECLARE_METATYPE(QString);
然后,int id=qRegisterMetaType<QString>("QString");
加上這兩句就注冊成功了。

貼個示例的代碼,次線程不斷更改一個QString傳給GUI主線程,主線程在GUI界面上顯示。
mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>

class MyThread : public QThread
{
Q_OBJECT

public:
MyThread();
~MyThread();


protected:
void run();
signals:
void changeText(QString str);
};

#endif // MYTHREAD_H

widgett.h
#ifndef WIDGETT_H
#define WIDGETT_H

#include <QtGui/QMainWindow>
#include "ui_widgett.h"

class WidgetT : public QMainWindow
{
Q_OBJECT

public:
WidgetT(QWidget *parent = 0, Qt::WFlags flags = 0);
~WidgetT();

private:
Ui::WidgetTClass ui;
private slots:
void labelSetText(QString qstr);
};

#endif // WIDGETT_H

mythread.cpp
#include "mythread.h"

MyThread::MyThread()
: QThread()
{

}

MyThread::~MyThread()
{

}

void MyThread::run(){

static int i=0;
while(true)
{
++i;
QString strnum = QString::number(i);
emit changeText(strnum);

QThread::sleep(1);
}
}

widgett.cpp
#include "widgett.h"
#include "mythread.h"
Q_DECLARE_METATYPE(QString);  、//申明元對象
WidgetT::WidgetT(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
MyThread *mythread = new MyThread;
int id=qRegisterMetaType<QString>(""); //注冊元對象
connect(mythread,SIGNAL(changeText(QString)),this,SLOT(labelSetText(QString)),Qt::QueuedConnection);
mythread->start();
}

WidgetT::~WidgetT()
{

}

void WidgetT::labelSetText(QString qstr){
ui.label->setText(qstr);
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵化市| 青河县| 上饶县| 普兰县| 宝兴县| 清涧县| 安龙县| 白水县| 黄山市| 河曲县| 宁南县| 阿拉善盟| 灵宝市| 镇雄县| 普安县| 嵊泗县| 微博| 罗山县| 洛川县| 竹北市| 大邑县| 定结县| 尉犁县| 新闻| 喀喇沁旗| 通州市| 高要市| 湟中县| 盈江县| 陕西省| 罗山县| 高唐县| 合江县| 宁阳县| 宽甸| 理塘县| 遂川县| 开原市| 正镶白旗| 阿巴嘎旗| 阿坝县|