背景:
QT在用户关闭窗口(直接点击"X"键)时,程序一般都需要做一些善后的事情,就我现在的程序来说,既关闭USB。如何实现?
正文:
首先,在对应窗体的".h"文件包含 #include <QCloseEvent>;的头文件。
其次,在该".h"文件中声明函数 void closeEvent( QCloseEvent * event); 注意:该函数已经在QT内部建立为点击"X"按钮的槽,不能更改其函数名;
最后,在对应窗体的".cpp"文件中实现void closeEvent(QCloseEvent * event);函数。譬如在其内部实现关闭USB,以达到窗体关闭,USB描述符也被销毁的目的。
参考文章:
QT中关闭应用程序和窗口的函数
http://blog.csdn.net/noif1655/article/details/10004777
QT控件函数的重写
http://blog.csdn.net/qustdjx/article/details/20130853
附:粗略概括QT的信号与槽的使用方法:
以我曾写过的FakeQQ(基于LAN的通信软体)为例,
在main函数中建立信号与槽的联系:
QObject::connect(&Login, SIGNAL( LoginSuccess() ), &Panel, SLOT( OpenMainpanel() ) );
以上的参数各代表什么意义呢:
Login 与 Panel均是我创建“登录窗体”和“主面板窗体”默认生成的两个类,
在Login类中,我创建了一个LoginSuccess()信号,用例如下
signals:
void Login_success(void);
这个便是信号,不需要去实现具体的函数,只需声明就够了。QT会做剩下的工作。
而在Panel类中,我创建了一个OpenMainpanel()的槽,用例如下:
Public slots:
void OpenMainpanel(void);
这个要注意的是,该槽需要实现具体的函数实体,该函数也就是你要具体做的事情。譬如就如该函数名称而言,打开主面板。
那在程序中怎么使用呢,很简单:
emit LoginSuccess(); // 发送登录成功的信号
然后程序就会根据main里面建立的信号与槽的关系,去调用相应的槽函数,该例即代表打开主面板。
记录地点:深圳WZ
记录时间:2015年12月11日 19:49:47