调用第三方库 多线程开发防止

来源:互联网 发布:洛阳理工网络教学平台 编辑:程序博客网 时间:2024/05/23 00:53

开发信用卡转账的问题集

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或者是__cdecl。

  *那就可以使用动态库中的函数了。

3.设计信用卡转账线程

遇到的问题:当在主界面类中调用动态函数时会耽误很长时间,有因为主界面的函数没有返回之前,主界面会一直被冻结。对用户造成不好的使用体验,所以必须使用多线程。

线程设计:申明私有变量:bool isstoped=false; int tstate=NUll;(线程状态)int Uistate=NULL(线程状态在)

run)函数中,一直检测isstopedtState并做出相应的判断,调用相应的函数。点击信用卡转账后,界面初始化,uiState=State=init:表明初始化,emiti),将线程状态置空;界面:如果返回的是零则提示”请插入卡后,按确认按钮“,并显示确定按钮,

点击确定按钮后,将界面状态自加一并赋值给线程状态,界面显示正在读卡,并隐藏确定按钮,emiti),将线程状态置空,界面收到信号判断读卡成功,根据界面状态,显示信用卡卡号、确定,按确定按钮后,显示提示;“请插入银行卡后,按确定按钮

点击确定按钮后,将界面状态加一赋值给线程状态。线程调用读银行卡函数,emiti),界面判段读卡成功显示卡号,提示”请取卡后,按确定“。

点击确定按钮后,修改状态,线程调用输入密码个获取键值函数,每取回一个键值发送一个键值信号,更新密码栏。**键盘上按确定。取完六个值后,暂停1秒,调用getpinblock函数,emiti),判断密码输入成功,显示输入还款框,(值改变就设置入参).点击确定直接交易。

//信号连接时不能带 参数,connect(c,SIGNAL(send(int )),this,SLOT(deal(int )));

原创粉丝点击