练习:在一个界面中有一个按钮,上面显示一个文字open,点击按钮能实现打开一个新的窗口,同时原窗口的按钮文字变成close,点击close能实现关闭新出现的窗口。
1.添加成员和槽函数
private:
QPushButton* btn;
QWidget* w2;
public slots:
void OpenNewWidget();
2.在构造函数中使用new在堆区开辟空间
this->btn=new QPushButton("open",this);
btn->resize(100,50);
this->resize(600,400);
connect(btn,&QPushButton::clicked,this,&Widget::OpenNewWidget);
w2=nullptr;
3.槽函数实现
void Widget::OpenNewWidget()
{
if(this->btn->text()=="open")
{
this->btn->setText("close");
w2=new QWidget();
w2->setWindowTitle("这是新的界面");
this->w2->show();
}
else
{
this->btn->setText("open");
if(w2!=nullptr)
{
this->w2->close();
delete w2;
w2=nullptr;
}
}
}
4.防止内存泄漏,在析构函数中释放空间
Widget::~Widget()
{
if(w2!=nullptr)
{
delete w2;
}
}
5.效果展示
5.1运行程序或效果为:
5.2点击按钮后出现新的窗口,同时按钮文本编程close