QT-用按钮实现新窗口的打开和关闭
首先,在Widget头文件中创建一个新的窗口对象,再设置一个flag变量来记录当前窗口的开关情况,声明为Widget类的成员变量,能够方便后面函数的访问。
同时声明实现窗口开关的函数openWidget()。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
bool flag = false;
QWidget * W1 = new QWidget();
void openWidget();
};
#endif // WIDGET_H
在widget的cpp文件中新建一个按钮btn1,并通过connect语句将btn1的点击操作与openWidget函数相连接,同时判断当前窗口开关情况,修改按钮文本信息
#include "widget.h"
#include "ui_widget.h"
#include "QPushButton"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton * btn1 = new QPushButton(this);
btn1->setText("open");
connect(btn1,&QPushButton::clicked,this,[=](){
openWidget();
if(flag == true)
btn1->setText("close");
else
btn1->setText("open");
});
}
void Widget::openWidget(){
if(flag == false){
W1->show();
flag = true;
}
else{
W1->close();
flag = false;
}
}
Widget::~Widget()
{
delete ui;
}