如图:程序打开时按钮名为Open
点击按钮后,打开新窗口,按钮名变为Close
所使用Qt版本为5.9.9,Qt Creator版本为4.11.0
原理:在打开和关闭新窗口时改变flag的值,通过flag值,判断打开或者关闭新窗口。
代码实现:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "newwindow.h"
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
QPushButton *btn = new QPushButton(); //在此处定义btn目的是为了在函数中改变btn的名称
void ToggleWindow();
newWindow *new_win;
bool flag; //判断窗口状态
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QPushButton>
#include "newwindow.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
btn->setParent(this);
btn->setText("Open");
resize(400,400);
connect(btn,&QPushButton::clicked,this,&Widget::ToggleWindow); //将按钮连接信号槽识别按钮按下事件
}
Widget::~Widget()
{
}
void Widget::ToggleWindow()
{
if(flag)
{
new_win = new newWindow();
new_win->resize(200,200);
new_win->show(); //使该新建类显示
new_win->setAttribute(Qt::WA_DeleteOnClose); //关闭窗口时释放内存防止内存泄漏
flag = 0;
btn->setText("Close");
qDebug() << "OpenWindow Over!";
}
else
{
new_win->close();
flag = 1;
btn->setText("Open");
qDebug() << "CloseWindow Over!";
}
}
附qDebug输出记录: