开发信用卡转账的问题集
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()函数中,一直检测isstoped和tState并做出相应的判断,调用相应的函数。点击信用卡转账后,界面初始化,uiState=State=init:表明初始化,emit(i),将线程状态置空;界面:如果返回的是零则提示”请插入卡后,按确认按钮“,并显示确定按钮,
点击确定按钮后,将界面状态自加一并赋值给线程状态,界面显示正在读卡,并隐藏确定按钮,emit(i),将线程状态置空,界面收到信号判断读卡成功,根据界面状态,显示信用卡卡号、确定,按确定按钮后,显示提示;“请插入银行卡后,按确定按钮”
点击确定按钮后,将界面状态加一赋值给线程状态。线程调用读银行卡函数,emit(i),界面判段读卡成功显示卡号,提示”请取卡后,按确定“。
点击确定按钮后,修改状态,线程调用输入密码个获取键值函数,每取回一个键值发送一个键值信号,更新密码栏。**键盘上按确定。取完六个值后,暂停1秒,调用getpinblock函数,emit(i),判断密码输入成功,显示输入还款框,(值改变就设置入参).点击确定直接交易。
//信号连接时不能带 参数,connect(c,SIGNAL(send(int )),this,SLOT(deal(int )));