qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成, 用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒(諸如新建乙個qwidget或者qdialog)。如果要想通過新建的執行緒實現乙個gui的功能,那麼就需要通過使用執行緒間的通訊來實現。這裡使用乙個簡單的例子來理解一下 qthread中signal/slot的相關用法。
首先,派生乙個qthread的子類
mythread.h
view plaincopy to clipboardprint?
class mythread: public qthread
;
void send(qstring s)就是定義的訊號
mythread.cpp
view plaincopy to clipboardprint?
#include "mythread.h"
mythread::mythread()
void mythread::run()
exec();
}
emit send("this is the son thread") 為發射此訊號,在run中迴圈傳送,每次休眠五秒
之後我們需要在另外的執行緒中定義乙個slot來接受mythread發出的訊號。如新建乙個mywidget
mywidget .h
view plaincopy to clipboardprint?
class mywidget : public qwidget ;
void receiveslot(qstring s)就用來接受發出的訊號,並且實現引數的傳遞。
mywidget .cpp
view plaincopy to clipboardprint?
#include "mywidget.h"
mywidget::mywidget(qwidget *parent) :qwidget(parent)
mywidget::~mywidget()
void mywidget::receiveslot(qstring s)
接受函式實現彈出發送訊號中所含引數(qstring型別)的訊息框
在main()函式中建立新執行緒,來實現兩個執行緒間的互動。
main.cpp
QThread與其他執行緒間相互通訊
qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成,用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒 諸如新建乙個qwidget或者qdialog 如果要想通過新建的執行緒實現...
QThread與其他執行緒間相互通訊
qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成,用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒 諸如新建乙個qwidget或者qdialog 如果要想通過新建的執行緒實現...
C 泛型與其他型別的相互轉換
泛型類及型別轉換 泛型類 public class mytemplate t 設計乙個泛型類 public void t s 內容相連或者相加 else if s is string 字串相連 else if s is double 浮點數相加 else if s is bool bool型求或 p...