Qt实战案例(11) |
您所在的位置:网站首页 › qq音乐常用功能和槽点怎么关闭不了 › Qt实战案例(11) |
目录
一、项目介绍二、项目基本配置三、UI界面设计四、emit五、主程序实现5.1 mainwindow.h头文件5.2 mainwindow.cpp源文件5.3 newwindow.h头文件5.4 newwindow.cpp源文件
六、效果演示
一、项目介绍
利用Qt设置两个界面,主界面上有一个按钮,点击主界面上这个按钮,打开一个子界面,子界面上有三个按钮,分别控制关闭主窗口,关闭本身以及两者都关闭。 二、项目基本配置新建一个Qt案例,项目名称为“MouseEvent”,基类选择“QMainWindow”,完成项目创建。 新建完mainwindow.h,cpp,ui后,右击文件——>Add New: 在主界面(mainwindow.ui)中创建一个按钮,设置其objectName为:open_btn,界面如下: 三个按钮的主要内容如下: 名称类型属性关闭主窗口QPushButtonobjectName:btn1关闭本身QPushButtonobjectName:btn2两者都关闭QPushButtonobjectName:btn3 四、emit所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。 emit 的含义是发出,也就是发出后面承接的信号。感兴趣的接收者会关注这个信号。当接收者连接这个信号时,就可以通过槽函数获得实际值。这样就完成了数据从发出者到接收者的一个转移。 【总结】:当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。 参考: https://blog.csdn.net/alzzw/article/details/99628409 五、主程序实现 5.1 mainwindow.h头文件头文件中首先需要包含子界面的头文件: #include"newwindow.h"然后声明两个私有槽函数: private slots: void on_open_btn_clicked();//按钮点击槽函数 void getinfo(); //子界面发送过来的信号对应的槽函数on_open_btn_clicked()表示open_btn按钮对应的点击槽函数,getinfo()表示子界面发送过来的信号对应的槽函数。 然后在private中声明新界面: private: newwindow *m_second; //声明新界面由于新子界面class名称为newwindow,因此声明如上。 5.2 mainwindow.cpp源文件首先在主程序中声明子界面,然后将该界面的close_main()信号与之前在头文件中定义的getinfo()槽函数连接: m_second=new newwindow; //创建一个newwindow新界面 connect(m_second,SIGNAL(close_main()),this,SLOT(getinfo()));然后定义点击打开按钮槽函数: //定义点击打开按钮的槽函数 void MainWindow::on_open_btn_clicked() { m_second->show();//显示子界面 }定义子界面发送过来的信号对应的槽函数(内容是关闭主界面,有三种方法): void MainWindow::getinfo() { // this->hide(); //方法一 //QMainWindow::close();//方法二 QWidget::close(); //方法三 } 5.3 newwindow.h头文件newwindow.h头文件需要声明一个信号: signals: void close_main();声明三个按钮点击的私有槽函数: private slots: void on_btn1_clicked(); void on_btn2_clicked(); void on_btn3_clicked(); 5.4 newwindow.cpp源文件newwindow.cpp源文件中定义三个按钮点击函数。 定义关闭本身按钮槽函数比较简单,利用close()函数,代码如下: void newwindow::on_btn2_clicked() //关闭自身窗口 { QWidget::close(); }关闭主窗口按钮槽函数利用emit发射信号,信号为close_main()信号,该信号连接的槽函数在mainwindow.cpp源文件中定义过了,用于关闭主窗口: void newwindow::on_btn1_clicked() //关闭主窗口 { emit close_main();//发射信号 }全部关闭按钮槽函数是上述两个按钮的叠加,代码如下: void newwindow::on_btn3_clicked() //全部关闭 { QWidget::close(); emit close_main(); } 六、效果演示如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/55512397 ok,以上便是文章的全部内容了,如果对你有所帮助,记得点个赞哟~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |