• QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)


     背景:

      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

  • 相关阅读:
    滑动切换界面---多个Activity
    172. Factorial Trailing Zeroes
    152. Maximum Product Subarray
    149. Max Points on a Line
    [转载][c++]用宏(Macro)定义一个函数
    [转载][C++]C++11 左值、右值、右值引用详解
    [转载][c++]C++中指针常量和常量指针的区别
    [转载][C++]类构造函数初始化列表
    22. Generate Parentheses
    328. Odd Even Linked List
  • 原文地址:https://www.cnblogs.com/ChYQ/p/5039870.html
Copyright © 2020-2023  润新知