首先创建一个新的widget项目
本文使用的 Qt版本为 Qt 5.8.0 MinGW 32bit,取消创建界面,创建完成后,接下来都在widget.cpp文件中进行操作。
正文
第一种方法:
我们可以创建两个按钮,分别命名为open和close,连接按钮和窗口类对象,使用Lamdba表达式打开、关闭新窗口。
#include "widget.h"
#include <QPushButton>
#include <QWidget>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//创建一个新的窗体
QWidget* one = new QWidget;
//创建两个按钮
QPushButton *btn = new QPushButton("open",this);
QPushButton *btn2 = new QPushButton("close",this);
//设置窗口大小
resize(600,400);
//改变按钮位置
btn->move(100,200);
btn2->move(300,200);
//设置窗口标题
setWindowTitle("原窗口");
one->setWindowTitle("新窗口");
//连接按钮和窗口类对象,进行打开/关闭操作
connect(btn,&QPushButton::clicked,one,[=]()
{
one ->show();
});
connect(btn2,&QPushButton::clicked,one,[=]()
{
one ->close();
});
}
Widget::~Widget()
{
}
第二种方法:
此方法创建一个按钮来打开、关闭新窗口,需要在Lamdba表达式中再多加一个if判断语句就可以实现。
#include "widget.h"
#include <QPushButton>
#include <QWidget>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//创建一个新的窗体
QWidget * one = new QWidget;
//创建一个按钮
QPushButton *btn = new QPushButton("open",this);
//设置窗口大小
resize(500,500);
//改变按钮位置
btn ->move(100,200);
//设置窗口标题
setWindowTitle("可以变化的开关按钮");
one->setWindowTitle("新窗口");
//连接按钮和窗口类对象,进行打开/关闭操作
connect(btn,&QPushButton::clicked,one,[=]()
{
if(btn->text()=="close")
{
one->close();
btn->setText("open");
}else
{
one->show();
btn->setText("close");
}
});
}
Widget::~Widget()
{
}
实现效果如下:
1、
2、
随便录的屏,然后转换成了gif格式,有点模糊。