QT 子窗体关闭或按钮返回父窗体(零基础保姆级最后完整代码和项目下载)
- 功能
父窗体点击按钮打开子窗体并隐藏父窗体,子窗体点击返回按钮或者关闭按钮后销毁自己并返回父窗体
- 效果展示
创建项目MySub
设计UI
-
打开uidesigner
-
设计父窗体ui
-
建立子窗体
-
设计子窗体UI
子窗体代码
“subwidget.h”
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
namespace Ui {
class SubWidget;
}
class SubWidget : public QWidget
{
Q_OBJECT
public:
explicit SubWidget(QWidget *parent = nullptr);
~SubWidget();
private:
Ui::SubWidget *ui;
signals:
void subClose();
private:
void closeEvent(QCloseEvent *){//重写关闭按钮事件
emit subClose();//发出关闭信号,父窗体接收信号后显示窗体
}
};
#endif // SUBWIDGET_H
“subwidget.cpp”
#include "subwidget.h"
#include "ui_subwidget.h"
SubWidget::SubWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SubWidget)
{
ui->setupUi(this);
//关联返回按钮点击事件与窗体关闭事件
connect(ui->pushButton,&QPushButton::clicked,this,&SubWidget::close);
}
SubWidget::~SubWidget()
{
delete ui;
}
父窗体代码
“widget.h”文章来源:https://www.toymoban.com/news/detail-513733.html
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "subwidget.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
“widget.cpp”文章来源地址https://www.toymoban.com/news/detail-513733.html
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
this->hide();//当前窗体隐藏
SubWidget *sub = new SubWidget();//新建子窗体
connect(sub,&SubWidget::subClose,this,&QWidget::show);//关联子窗体关闭信号与父窗体显示事件
sub->setAttribute(Qt::WA_DeleteOnClose);//设置子窗体属性:关闭即销毁
sub->show();//显示子窗体
}
到了这里,关于QT 子窗体关闭或按钮返回父窗体(零基础保姆级)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!