需求:在主窗口中点击【打开】按钮后,弹出一个子窗口,同时按钮上的文字变成【关闭】,再次点击即可关闭子窗口!
分析:其实弹出子窗口并不难实现,关键是同一个按钮实现打开与关闭的功能,这个需要注意实现的方式以及一些细节,需要用到lambda表达式,具体步骤如下:
1、首先新建一个项目,创建一个空窗口文件,如下图1所示,然后鼠标右键点击项目,选择添加新文件,选择C++ Class类型,然后选择基于QWidget,创建一个名为childWin的子窗口文件,如下图2所示。
2、在widget.h文件添加的代码如下,其中选择在主窗口类中的public中创建按钮和子窗口对象是为了能够全局使用,可以在槽函数中使用这些对象。
#include <QWidget>
#include "childwin.h"
#include <QPushButton>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//创建按钮对