成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

QT中實現Thread與GUI主線程連通方法

移動開發
本文以QString為例,注冊時首先Q_DECLARE_METATYPE(QString);然后,int id=qRegisterMetaType<QString>("QString");加上這兩句就注冊成功了。先來看內容。

本文介紹的是QT中實現Thread與GUI主線程通,目前只會一種,采用信號槽機制。

通常情況下,信號機制可以同步操作,這就意味著在發射信號的時候,使用直接函數即可以立刻調用連接到一個信號上的多個。然而,當連接位于不同線程中的對象時,這一機制就會變得不同步起來,可以通過修改QObject::connect()的第5個可選參數而改變。

connect的第五個參數Qt::QueuedConnection表示函數由接受信號的線程所執行,如果不加表示函數由發出信號的次線程執行。當傳遞信號的參數類型不是QT的元類型時要先注冊,關于QT的元類型可以參看QT文檔

QMetaType這個類里面列舉了所有的元類型。

以QString為例,注冊時首先Q_DECLARE_METATYPE(QString);然后,int id=qRegisterMetaType<QString>("QString");加上這兩句就注冊成功了。

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

  1. mythread.h  
  2. #ifndef MYTHREAD_H  
  3. #define MYTHREAD_H  
  4. #include <QThread> 
  5. class MyThread : public QThread  
  6. {  
  7. Q_OBJECT  
  8. public:  
  9. MyThread();  
  10. ~MyThread();  
  11. protected:  
  12. void run();  
  13. signals:  
  14. void changeText(QString str);  
  15. };  
  16. #endif // MYTHREAD_H  
  17. widgett.h  
  18. #ifndef WIDGETT_H  
  19. #define WIDGETT_H  
  20. #include <QtGui/QMainWindow> 
  21. #include "ui_widgett.h"  
  22. class WidgetT : public QMainWindow  
  23. {  
  24. Q_OBJECT  
  25. public:  
  26. WidgetT(QWidget *parent = 0, Qt::WFlags flags = 0);  
  27. ~WidgetT();  
  28. private:  
  29. Ui::WidgetTClass ui;  
  30. private slots:  
  31. void labelSetText(QString qstr);  
  32. };  
  33. #endif // WIDGETT_H  
  34. mythread.cpp  
  35. #include "mythread.h"  
  36. MyThread::MyThread()  
  37. : QThread()  
  38. {  
  39. }  
  40. MyThread::~MyThread()  
  41. {  
  42. }  
  43. void MyThread::run(){  
  44. static int i=0;  
  45. while(true)  
  46. {  
  47. ++i;  
  48. QString strnum = QString::number(i);  
  49. emit changeText(strnum);  
  50.  
  51. QThread::sleep(1);  
  52. }  
  53. }  
  54. widgett.cpp  
  55. #include "widgett.h"  
  56. #include "mythread.h"  
  57. Q_DECLARE_METATYPE(QString);  
  58. WidgetT::WidgetT(QWidget *parent, Qt::WFlags flags)  
  59. : QMainWindow(parent, flags)  
  60. {  
  61. ui.setupUi(this);  
  62. MyThread *mythread = new MyThread;  
  63. int id=qRegisterMetaType<QString>("");  
  64. connect(mythread,SIGNAL(changeText(QString)),this,SLOT(labelSetText(QString)),Qt::QueuedConnection);  
  65. mythread->start();  
  66. }  
  67. WidgetT::~WidgetT()  
  68. {  
  69. }  
  70. void WidgetT::labelSetText(QString qstr){  
  71. ui.label->setText(qstr);  

小結:QT中實現Thread與GUI主線程連通方法的內容介紹完了,在壇子里逛了一圈,解決線程的問題還真不少,***還是希望本文對你有幫助。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2009-07-14 15:34:22

Swing中的線程GUI程序

2011-06-14 09:46:11

Qt QThread 線程

2012-05-14 17:09:05

iOS

2011-06-20 13:43:08

Qt Socket 線程

2011-06-30 17:51:17

QT 元類型 線程

2017-03-23 18:02:59

Android線程Tread

2011-06-14 14:57:06

QT Python GUI

2010-03-01 13:28:44

Python子線程

2011-06-13 10:03:19

Qt 多線程 編程

2011-06-22 16:02:37

Qt 多線程 重入

2009-06-29 17:54:10

Java多線程Thread類創建線程

2011-06-13 10:21:25

QT 信號 槽機制

2011-06-30 15:25:05

QT QPF TTF

2011-06-30 17:31:32

Qt 多線程 信號

2011-06-13 09:04:39

QT Flash 交互

2017-03-13 10:41:33

iOSUI操作主線程

2011-07-01 14:34:02

Thread Affinity 信號

2025-04-28 08:20:40

ndroid主線程線程

2011-06-24 11:12:39

Qt 多線程 線程

2011-06-13 17:46:07

Qt 串口通信
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久免费看 | 免费黄色成人 | 91传媒在线观看 | 国产精品美女一区二区 | 久久国产秒 | 亚洲精品日韩精品 | 中文字幕在线第一页 | 欧美在线视频二区 | 亚洲精品二区 | 日本在线一区二区三区 | 喷潮网站 | 在线中文字幕日韩 | 午夜欧美a级理论片915影院 | 人人操日日干 | 国产网站在线免费观看 | 久久不射电影网 | 国产农村妇女毛片精品久久麻豆 | 五月婷婷激情 | 中文字幕11页| 中文字幕一区在线观看视频 | 国产精品嫩草影院精东 | 日韩一区二区在线播放 | 美女福利视频网站 | 国产精品亚洲一区二区三区在线 | 欧美一级www片免费观看 | 欧美日本亚洲 | 日韩亚洲视频 | 精品久久久久久亚洲精品 | 国产精品高清一区二区 | 国产一区二区小视频 | 国产精品福利网站 | 精品无码久久久久久久动漫 | 国产精品久久久久久久一区二区 | 久久99深爱久久99精品 | 精品国产欧美一区二区 | 久久精品16 | 伊人天堂网 | 自拍偷拍小视频 | 国产一区二区久久 | 国产一级特黄真人毛片 | 国产四虎|