成人免费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 多線程 編程

2009-06-29 17:54:10

Java多線程Thread類創建線程

2011-06-22 16:02:37

Qt 多線程 重入

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 信號

2010-02-24 11:19:00

Python主線程

2025-04-28 08:20:40

ndroid主線程線程

2011-06-13 17:46:07

Qt 串口通信
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人jvid在线播放 | 欧美日日| 福利视频网 | 欧美激情视频一区二区三区在线播放 | 午夜视频免费在线观看 | 色在线视频网站 | 成人精品在线观看 | 一级全黄少妇性色生活免费看 | 久久国产婷婷国产香蕉 | 国产丝袜一区二区三区免费视频 | 国产精品一区免费 | av黄色在线 | 国产精品我不卡 | 亚洲九九色 | 巨大荫蒂视频欧美另类大 | 国产精品一区二区久久 | 午夜免费| 成人午夜网站 | 国产高清视频在线播放 | 视频一区二区在线观看 | 草久在线 | 久久精品一级 | 欧美日韩在线一区二区三区 | 欧美一区不卡 | 久久久久久国 | 亚洲一区二区精品视频 | 日本在线精品视频 | 免费三级网| 日韩一区二区三区视频在线观看 | 久久久久国产精品 | 91精品国产色综合久久 | 天天操网 | 国产精品高清在线 | 99久久精品免费 | 视频二区在线观看 | 日韩午夜 | 夜夜草 | 亚洲中午字幕 | 日韩精品免费在线观看 | 亚洲人精品 | 国产精品久久久久久久久久软件 |