1,除了多工處理需要執行緒,還有乙個就是當用到定時器,而介面上又有乙個資料處理很複雜的時候,就需要使用多執行緒。
2,qt4中的執行緒的兩種使用方法:
注意執行緒處理函式內部不允許操作圖形介面
第一種,定義乙個類,必須繼承於qthread
class mythread : public qthread//注意應該將複雜的處理放在run函式裡面
啟動執行緒時不能直接呼叫run(),正確的呼叫方法是,thread.start();通過start()間接的呼叫run()函式。
注意:qthread只有run函式是在新執行緒裡的,其他所有函式都在qthread生成的執行緒裡。
執行緒類**:
#include "mythread.h"
mythread::mythread(qobject *parent) : qthread(parent)
void mythread::run()
主程式**:
#include "ui_widget.h"
#include #include widget::widget(qwidget *parent) :
qwidget(parent),
ui(new ui::widget)
void widget::stopthread()
void widget::dealdone()
void widget::dealtimeout()
widget::~widget()
void widget::on_pushbutton_clicked()
//啟動執行緒處理資料
thread->start();
}
第二種,定義乙個類,繼承與qobject;類中設定乙個執行緒函式(只有乙個是執行緒函式)。
基本語法: class mythread : public qobject }
主函式中,1)建立執行緒物件(不能指定父物件)
myt = new mythread;
2) qthread執行緒物件
qthread *thread = new qthread(this);
3)把自定義執行緒類,加入到子執行緒
a)啟動子執行緒, thread.start();只是把執行緒開啟了,並沒有啟動執行緒處理函式
b)執行緒函式的啟動必須通過signal - slot的方式啟動。
connect(this,訊號,mythread ,&mytimer);
效果圖:
主線程**:
#include "widget.h"
#include "ui_widget.h"
widget::widget(qwidget *parent) :
qwidget(parent),
ui(new ui::widget)
widget::~widget()
void widget::dealclose()
void widget::dealsignal()
void widget::on_buttonstart_clicked()
//啟動執行緒,但是沒有啟動執行緒處理函式
thread -> start();
myt -> setflag(false);
//不能直接呼叫執行緒處理函式,直接呼叫,導致,執行緒處理函式和主線程是在同乙個執行緒
//只能通過訊號和槽的方法來呼叫 myt -> mytimeout
emit startthread();
}void widget::on_buttonstop_clicked()
myt -> setflag(true);
thread -> quit();
thread -> wait();
}
子執行緒**:
#include "mythread.h"
#include mythread::mythread(qobject *parent) : qobject(parent)
void mythread::mytimeout()
}}void mythread::setflag(bool flag)
3,connect第五個引數的作用?注意第五個引數只有在多執行緒時才有用。第五個引數的含義是連線方式,有三種:預設,佇列,直接。
如果是預設的時候:如果是多執行緒,預設使用佇列;如果是單執行緒,預設使用直接方式。
如果是佇列的時候:槽函式所在的執行緒和接收者一樣。
如果是直接方式的時候:槽函式所在的執行緒和傳送者一樣。
Hibernate框架基礎知識第五天
第五天hibernate優化 1.關於快取的理解。快取是介於應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。2.hib...
Android基礎第五天
contents sms raw contacts,data,mimetypes 1 去raw contacts表中取出聯絡人的 id 2 去data表中根據上面的 id查詢對應id的資料 查詢聯絡人的uri contents contents 檢視可以被看成是虛擬表或儲存查詢。可通過檢視訪問的資料...
Python 基礎 第五天
python是高度物件導向的 獲取使用者的輸入內容可以用input 函式實現 也可以使用str string,字串 類的各種方法。可以用rjust方法來獲得乙個右對齊的指定寬度的字串。檔案 可以使用內建的open函式並指定檔名以及自己所希望使用的開啟模式開啟乙個檔案。開啟模式可以是閱讀模式 r 寫入...