qt creator 两个独立的窗口

黑马程序员Qt(第一部分)

https://www.bilibili.com/video/BV1XW411x7NU?p=10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加一个按钮:

#include<QPushButton>
private:
    QPushButton b3;

初始化按钮

    b3.setParent(this);
    b3.setText("跳转到子窗口");

    b3.move(50,50);

    setWindowTitle("主窗口");

快捷键 F4 ,跳转 .h 和 .cpp

添加子窗口

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在子窗口中添加按钮

在 subwidget.h和 subwidget.cpp 修改

#include<QPushButton>
private:
    QPushButton b ;

AAAA

#include "subwidget.h"

SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
    this->setWindowTitle("子窗口");
    b.setParent(this);
    b.setText("切换到主窗口");
}
显示子窗口

最终代码:
subwidget.h

#ifndef SUBWIDGET_H
#define SUBWIDGET_H

#include <QWidget>
#include<QPushButton>

class SubWidget : public QWidget
{
    Q_OBJECT
public:
    explicit SubWidget(QWidget *parent = nullptr);

signals:
    void mySignal();

public slots:
    void sendSlot();
private:
    QPushButton b ;
};

#endif // SUBWIDGET_H

subwidget.cpp

#include "subwidget.h"

SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
    this->setWindowTitle("子窗口");
    b.setParent(this);
    b.setText("切换到主窗口");

    connect(&b,&QPushButton::clicked,this, &SubWidget::sendSlot);
    resize(400,300);
}


void SubWidget::sendSlot()
{
    emit mySignal();
}

主窗口:

mainwidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include<QPushButton>
#include "subwidget.h"

class mainWidget : public QWidget
{
    Q_OBJECT

public:
    mainWidget(QWidget *parent = 0);
    ~mainWidget();
    void changeWin();
    void dealSub();
private:
    QPushButton b3;
    SubWidget w;

};

#endif // MAINWIDGET_H

mainwidget.cpp

#include "mainwidget.h"

mainWidget::mainWidget(QWidget *parent)
    : QWidget(parent)
{
    b3.setParent(this);
    b3.setText("跳转到子窗口");

    b3.move(50,50);

    setWindowTitle("主窗口");
    //显示子窗口
    //w.show();
    connect(&b3,&QPushButton::released,this,&mainWidget::changeWin);

    connect(&w,&SubWidget::mySignal,this,&mainWidget::dealSub);

    resize(400,300);
}

mainWidget::~mainWidget()
{

}

void mainWidget::changeWin()
{
    //子窗口显示
    w.show();
    //主窗口隐藏
    this->hide();
}

void mainWidget::dealSub()
{
    w.hide();
    this->show();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值