QT点击按钮打开和关闭子窗口

QT点击按钮打开和关闭子窗口

1、功能描述

在主窗口上点击一个按钮生成一个新的窗口,并同时生成另外一个按钮实现点击关闭新窗口的功能。

2、两个按钮实现

  • widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton *btn1;
    QPushButton *btn2;
    QWidget *new_widget;
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H
  • widget.cpp
#include "widget.h"
#include <QApplication>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //创建两个按钮
    btn1 = new QPushButton("OPEN",this);
    btn2 = new QPushButton("CLOSE",this);
    btn2->move(100,0);

    //设置主窗口标题
    setWindowTitle("主窗口");

    //创建一个子窗口
    new_widget = new QWidget;

    //设置子窗口标题
    new_widget->setWindowTitle("子窗口");

    //重置窗口大小
    resize(600,500);

    connect(btn1,&QPushButton::clicked,new_widget,&Widget::show);
    connect(btn2,&QPushButton::clicked,new_widget,&Widget::close);

}

Widget::~Widget()
{
}
  • main.cpp
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

在这里插入图片描述

3、一个按钮实现

  • widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton *btn;
    QWidget *new_widget;
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

  • widget.cpp
#include "widget.h"
#include <QApplication>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //创建按钮
    btn = new QPushButton("OPEN",this);

    //设置主窗口标题
    setWindowTitle("主窗口");

    //创建一个子窗口
    new_widget = new QWidget;

    //设置子窗口标题
    new_widget->setWindowTitle("子窗口");

    //重置窗口大小
    resize(600,500);

    connect(btn, &QPushButton::clicked, new_widget, [=](){
        if(btn->text() == "OPEN")
        {
            btn->setText("CLOSE");
            new_widget->show();
        }
        else if(btn->text() == "CLOSE")
        {
            btn->setText("OPEN");
            new_widget->close();
        }
    });
}

Widget::~Widget()
{
}
  • main.cpp
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来给你讲一下具体的实现步骤。 1. 首先,你需要使用Qt Designer设计两个窗口的UI界面,并保存成两个.ui文件,分别为main_window.ui和sub_window.ui。 2. 然后,你需要使用pyuic5工具将两个.ui文件转换成.py文件。在命令行中输入以下命令即可: ```bash pyuic5 main_window.ui -o main_window.py pyuic5 sub_window.ui -o sub_window.py ``` 3. 接着,在主窗口的.py文件中,你需要导入窗口的UI类。可以在文件头部添加以下代码: ```python from sub_window import Ui_SubWindow ``` 4. 在主窗口的类中,你需要实现一个槽函数,用来响应按钮的点击事件,以打开窗口。槽函数可以定义如下: ```python def open_sub_window(self): self.sub_window = QtWidgets.QDialog() ui = Ui_SubWindow() ui.setupUi(self.sub_window) ui.button.clicked.connect(self.close_sub_window) self.sub_window.show() ``` 其中,self.sub_window是窗口的实例,Ui_SubWindow是窗口的UI类。在槽函数中,你需要先创建一个窗口实例,然后将窗口的UI类与窗口实例关联,接着连接窗口中的按钮信号与关闭窗口的槽函数,最后显示窗口。 5. 接下来,在主窗口的类中,你需要再实现一个槽函数,用来响应窗口中按钮的点击事件,以关闭窗口。槽函数可以定义如下: ```python def close_sub_window(self): self.sub_window.close() ``` 其中,self.sub_window是窗口的实例。 6. 最后,在主窗口的构造函数中,你需要将按钮的clicked信号与打开窗口的槽函数关联。可以添加如下代码: ```python self.button.clicked.connect(self.open_sub_window) ``` 其中,self.button是主窗口中的按钮实例。 这样,你就完成了主窗口窗口的设计,以及它们之间的信号和槽的连接。当你点击主窗口中的按钮时,窗口就会弹出来,当你在窗口点击按钮后,窗口就会关闭并返回到主窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值