Qt基础 练习:弹出新窗口并关闭的两种实现方式(两个按钮、一个按钮)

根据B站《最新QT从入门到实战完整版|传智教育》学习的,BV号:BV1g4411H78N

打开窗口关闭窗口,两种实现方式

1.两个按钮,点击第一个按钮open window打开一个新窗口,点击第二个窗口close window关闭新窗口

2.一个按钮,点击一次,按钮的名字从open window变为close window,并且弹出一个新窗口;

再次点击,按钮名字从close window变为open window,并且关闭新窗口

实例

两个按钮

两个按钮的相对简单,直接看代码吧!本人小白,如果有可以改进的地方求大佬指点,谢谢!

newwidget.h

#ifndef NEWWIDGET_H
#define NEWWIDGET_H

#include <QWidget>

class newWidget : public QWidget
{
    Q_OBJECT
public:
    explicit newWidget(QWidget *parent = nullptr);
    void OpenWindow();
    void CloseWindow();
    void OCWindow();
    QWidget * n = new QWidget;
    bool jud = false;

signals:

};

#endif // NEWWIDGET_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<newwidget.h>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
     newWidget * n;
};
#endif // WIDGET_H

main.cpp

#include "widget.h"

#include <QApplication>

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

newwidget.cpp

#include "newwidget.h"
#include<qwidget.h>
#include<widget.h>

newWidget::newWidget(QWidget *parent) : QWidget(parent)
{

}
void newWidget::OpenWindow()
{
        //第二个窗口实现
    //第二个窗口命名
    n->setWindowTitle("The second window");
    n->show();

}
void newWidget::CloseWindow()
{
    //关闭窗口
    n->close();
}

widget.cpp

#include "widget.h"
#include<QPushButton>
#include<newwidget.h>
#include<QDebug>
#include<QObject>


//打开窗口关闭窗口,两种实现方式:1.两个按钮,一个开一个关 2.一个按钮,按一下打开,按钮名字变关闭,再按关闭,关闭窗口

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //定义一个newwidget对象
    this->n = new newWidget(this);

            //两个按钮的情况
    //定义两个按钮
    QPushButton * btn = new QPushButton;
    QPushButton * btn2 = new QPushButton;

    //重置窗口大小
    this->resize(600,400);

    //按钮命名、依附、改变位置
    btn->setParent(this);
    btn2->setParent(this);
    btn->setText("Open window");
    btn2->setText("close window");
    btn2->move(100,0);

    //窗口命名
    setWindowTitle("OPEN OR CLOSE");


    //连接信号和槽
    connect(btn,&QPushButton::clicked,n,&newWidget::OpenWindow);
    connect(btn2,&QPushButton::clicked,n,&newWidget::CloseWindow);


}

Widget::~Widget()
{
}

一个按钮

一个按钮的情况我做了好久,之前思路被限制在两个connect上了,后面从网上找了半天也没有解决,直到看了一个贴子才发现脑袋瓜被限制了呀。这段代码是我摸爬滚打写出来的,有改进的地方同样也希望大佬指点,谢谢各位大佬!!!

newwidget.h

#ifndef NEWWIDGET_H
#define NEWWIDGET_H

#include <QWidget>

class newWidget : public QWidget
{
    Q_OBJECT
public:
    explicit newWidget(QWidget *parent = nullptr);
    void OCWindow();    //定义槽函数
    QWidget * n = new QWidget;
    bool jud = false;

signals:

};

#endif // NEWWIDGET_H

widget.h和上面的一样我就不重复粘贴了

main.cpp和上面的一样我就不重复粘贴了

newwidget.cpp

#include "newwidget.h"
#include<qwidget.h>
#include<widget.h>

newWidget::newWidget(QWidget *parent) : QWidget(parent)
{

}

void newWidget::OCWindow()
{
    //判断按钮此时的状态,并且执行打开或关闭操作
    if(jud == false)
    {
        n->setWindowTitle("The second window");
        n->show();
        jud = true;
    }
    else
    {
        n->close();
        jud = false;
    }
}

widget.cpp

#include "widget.h"
#include<QPushButton>
#include<newwidget.h>


//打开窗口关闭窗口,两种实现方式:1.两个按钮,一个开一个关 2.一个按钮,按一下打开,按钮名字变关闭,再按关闭,关闭窗口

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //定义一个newwidget对象
    this->n = new newWidget(this);



            //一个按钮
    //定义一个按钮
    QPushButton * btn3 = new QPushButton("Open window",this);

    //重置按钮大小
    btn3->resize(120,100);

    //移动按钮位置
    btn3->move(235,135);

    //重置窗口大小
    this->resize(600,400);

    //重命名窗口
    setWindowTitle("OPEN OR CLOSE");

    bool jud = false;

    //连接,使用Lambda表达式
    connect(btn3,&QPushButton::clicked,this,[=,&jud](){

        n->OCWindow();

        if(jud == false)
        {
            jud = true;
            btn3->setText("close window");

        }

        else
        {
            jud = false;
            btn3->setText("open window");

        }
    });


}

Widget::~Widget()
{
}

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Qt实现点击按钮弹出一个新界面,你需要以下步骤: 1. 创建一个新的 QWidget 类,作为你要弹出的新界面。 2. 在 QWidget 类中添加你需要的控件,比如按钮、文本框等。 3. 在主窗口中创建一个 QPushButton 控件,并将其添加到布局中。 4. 为 QPushButton 控件添加一个槽函数,在槽函数中创建新的 QWidget 对象,并显示它。 下面是一个简单的示例代码: ```cpp // 新界面类 class NewWidget : public QWidget { public: NewWidget(QWidget *parent = nullptr) : QWidget(parent) { // 添加控件 QLabel *label = new QLabel("Hello, World!", this); label->setAlignment(Qt::AlignCenter); label->setStyleSheet("font-size: 20px;"); } }; // 主窗口类 class MainWindow : public QMainWindow { public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { // 添加按钮 QPushButton *button = new QPushButton("Click me", this); connect(button, &QPushButton::clicked, this, &MainWindow::onButtonClick); setCentralWidget(button); } private slots: void onButtonClick() { // 弹出新界面 NewWidget *newWidget = new NewWidget(this); newWidget->setWindowTitle("New Widget"); newWidget->show(); } }; // 应用程序入口 int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); } ``` 在这个示例中,我们创建了一个 NewWidget 类作为新界面,添加了一个 QLabel 控件,并设置了字体样式。在主窗口中,我们创建了一个 QPushButton 控件,并将其添加到中央部件中。然后,我们为按钮添加了一个槽函数 onButtonClick(),在这个函数中创建了一个 NewWidget 对象,并显示它。 当用户点击按钮时,程序会执行 onButtonClick() 函数,弹出一个新的 NewWidget 界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值