qt黑马教程作业,点击按钮打开新窗口,再点击按钮关闭

一、目的

点击open按钮,打开一个新窗口,同时生成一个新按钮close,点击close按钮关闭新窗口。

二、代码

我创建的项目类叫mywidget
首先是mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QPushButton>

namespace Ui {
class myWidget;
}

class myWidget : public QWidget
{
    Q_OBJECT

public:
    explicit myWidget(QWidget *parent = nullptr);
    ~myWidget();
     void newButton();//用来显示新按钮,cpp中实现
    QPushButton *btn2;

private:
    Ui::myWidget *ui;


};

#endif // MYWIDGET_H

和默认的区别就是加了两行代码
void newButton();//用来显示新按钮,cpp中实现
QPushButton *btn2;

然后是mywidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QPushButton>

myWidget::myWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::myWidget)
{
    ui->setupUi(this);
   //新建open按钮,并设置大小和位置
    QPushButton * btn = new QPushButton;
    btn->setParent(this);
    btn->setText("open");
    this->resize(600,400);
    btn->resize(120,60);
    btn->move(240,100);

    //新建一个窗口,不调用show是不会显示的
    QWidget * newwidget = new QWidget;
    //按下open按钮,弹出新窗口
    connect(btn,&QPushButton::clicked,newwidget,[=](){
        newwidget->show();
        newwidget->resize(300,200);
        newwidget->move(1350,350);});

    //弹出close按钮
    this->btn2 = new QPushButton("close1",this);
    btn2->resize(120,60);
    btn2->move(100,233);
    btn2->setVisible(false);//先设置为不可见,调用newButton函数后再可见。
    connect(btn,&QPushButton::clicked,this,&myWidget::newButton);//同一信号连不同槽

    //弹出close按钮用lambda方法
    QPushButton *btn3 = new QPushButton("close2",this);
    btn3->setVisible(false);
    connect(btn,&QPushButton::clicked,this,[=](){
        btn3->setVisible(true);
        btn3->resize(120,60);
        btn3->move(350,233);
    });

    //点击close,关闭新窗口。(不同信号连同一个槽)
    connect(btn2,&QPushButton::clicked,newwidget,&myWidget::close);
    connect(btn3,&QPushButton::clicked,newwidget,&myWidget::close);
}

void myWidget::newButton()
{
    btn2->setVisible(true);
}

myWidget::~myWidget()
{
    delete ui;
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值