Qt实战案例(11)

您所在的位置:网站首页 qq音乐常用功能和槽点怎么关闭不了 Qt实战案例(11)

Qt实战案例(11)

2024-07-13 06:05| 来源: 网络整理| 查看: 265

目录 一、项目介绍二、项目基本配置三、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: 在这里插入图片描述 选择Qt设计师界面类,选择默认的Widget,下一步 在这里插入图片描述 将Class name改为newwindow(这里可以随意更改名称),然后下一步,完成。 在这里插入图片描述 创建完成后,会出现两个.h头文件,三个.cpp源文件和两个UI界面。 在这里插入图片描述

三、UI界面设计

在主界面(mainwindow.ui)中创建一个按钮,设置其objectName为:open_btn,界面如下: 在这里插入图片描述 在子界面(newwindow.ui)中创建三个按钮,界面如下: 在这里插入图片描述

三个按钮的主要内容如下:

名称类型属性关闭主窗口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