呼叫第三方庫 多執行緒開發防止
開發信用卡轉賬的問題集
1.關於動態庫的呼叫
當具有動態連線庫.dll檔案時,可以使用工具轉化出.lib檔案,再通過第三所提供的關於.dll中的頭函式編寫標頭檔案。在qt中應用動態庫,需要在.pro檔案中加入LIBS += -Lc:/gmc/qmf -lposinfqmf 說明:-LC:表示動態庫.lib檔案的路徑,-l表示的是動態庫.lib的名字。
2.頭函式的編寫
如果在c++中使用c編寫的動態庫,則需要加上#ifdef __cplusplus extern "C" {
#endif#ifdef __cplusplus } #endif。
在原先的函式與返回型別中加入 __stdcall
*那就可以使用動態庫中的函數了。
3.設計信用卡轉賬執行緒
遇到的問題:當在主介面類中呼叫動態函式時會耽誤很長時間,有因為主介面的函式沒有返回之前,主介面會一直被凍結。對使用者造成不好的使用體驗,所以必須使用多執行緒。
執行緒設計:申明私有變數:bool isstoped=false; int tstate=NUll;(執行緒狀態)int Uistate=NULL(執行緒狀態在)
run()函式中,一直檢測isstoped和tState並做出相應的判斷,呼叫相應的函式。點選信用卡轉賬後,介面初始化,uiState=State=init:表明初始化,emit(i),將執行緒狀態置空;介面:如果返回的是零則提示”請插入卡後,按確認按鈕“,並顯示確定按鈕,
點選確定按鈕後,將介面狀態自加一併賦值給執行緒狀態,介面顯示正在讀卡,並隱藏確定按鈕,emit(i),將執行緒狀態置空,介面收到訊號判斷讀卡成功,根據介面狀態,顯示信用卡卡號、確定,按確定按鈕後,顯示提示;“請插入銀行卡後,按確定按鈕”
點選確定按鈕後,將介面狀態加一賦值給執行緒狀態。執行緒呼叫讀銀行卡函式,emit(i),介面判段讀卡成功顯示卡號,提示”請取卡後,按確定“。
點選確定按鈕後,修改狀態,執行緒呼叫輸入密碼個獲取鍵值函式,每取回一個鍵值傳送一個鍵值訊號,更新密碼欄。**鍵盤上按確定。取完六個值後,暫停1秒,呼叫getpinblock函式,emit(i),判斷密碼輸入成功,顯示輸入還款框,(值改變就設定入參
//訊號連線時不能帶 引數,connect(c,SIGNAL(send(int )),this,SLOT(deal(int )));