qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成, 用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒(諸如新建乙個qwidget或者qdialog)。如果要想通過新建的執行緒實現乙個gui的功能,那麼就需要通過使用執行緒間的通訊來實現。這裡使用乙個簡單的例子來理解一下 qthread中signal/slot的相關用法。
首先,派生乙個qthread的子類
mythread.h
view plain
copy to clipboard
print?
class
mythread:
public
qthread;
void send(qstring s)就是定義的訊號
mythread.cpp
view plain
copy to clipboard
print?
#include"mythread.h"
mythread::mythread()
void
mythread::run()
exec();}
emit send("this is the son thread") 為發射此訊號,在run中迴圈傳送,每次休眠五秒
之後我們需要在另外的執行緒中定義乙個slot來接受mythread發出的訊號。如新建乙個mywidget
mywidget.h
view plain
copy to clipboard
print?
class
mywidget:
public
qwidget;
void receiveslot(qstring s)就用來接受發出的訊號,並且實現引數的傳遞。
mywidget.cpp
view plain
copy to clipboard
print?
#include"mywidget.h"
mywidget::mywidget(qwidget*parent):qwidget(parent)
mywidget::~mywidget()
void
mywidget::receiveslot(qstrings)
接受函式實現彈出發送訊號中所含引數(qstring型別)的訊息框
在main()函式中建立新執行緒,來實現兩個執行緒間的互動。
main.cpp
view plain
copy to clipboard
print?
#include
#include"mywidget.h"
intmain(
intargc,
char
*argv)
執行後,當mywidget彈出後,子執行緒mythread每隔5s即會彈出乙個提醒視窗,執行緒間通訊就此完成。
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...