Qt实现两个窗口之间切换

实现目标

  • 首先显示一个主窗口,在该窗口上创建一个按钮,然后按下该按钮,该主窗口隐藏,显示另一个窗口。
  • 在另一个窗口上也有一个按钮,当按下该按钮的时候,该窗口隐藏,显示原来的主窗口。

实现步骤

项目结构

在这里插入图片描述

subwidget.h源码
#ifndef SUBWIDGET_H
#define SUBWIDGET_H

#include <QWidget>
#include <QPushButton>

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

private:
    QPushButton * subButton;

private slots:
    void changeSlot();

signals:
    void mySignal();
};

#endif // SUBWIDGET_H

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();

public:
    SubWidget subWin;
    QPushButton * mainButton;

private slots:
    void tomainSlot();
    void tosubSlot();
};

#endif // MAINWIDGET_H

mainwidget.cpp源码
#include "mainwidget.h"
#include <QPushButton>

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("dage");
    mainButton = new QPushButton(this);
    mainButton->setText("to son");
    mainButton->resize(50,30);
    mainButton->move(100,100);
//    subWin.show();
    QObject::connect(&subWin,SIGNAL(mySignal()),this,SLOT(tomainSlot()));
    QObject::connect(mainButton,SIGNAL(clicked()),this,SLOT(tosubSlot()));
    this->resize(300,300);

}



MainWidget::~MainWidget()
{

}

void MainWidget::tosubSlot()
{
    this->hide();
    subWin.show();
}

void MainWidget::tomainSlot()
{
    this->show();
    subWin.hide();
}

subwidget.cpp源码
#include "subwidget.h"

SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
     this->setWindowTitle("xiaodi");
     subButton = new QPushButton;
     subButton->setParent(this);
     subButton->setText("to main");
     subButton->move(100,100);
     subButton->resize(50,30);
     QObject::connect(subButton,SIGNAL(clicked()),this,SLOT(changeSlot()));
     this->resize(300,300);

}

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

main.cpp源码

#include "mainwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();

    return a.exec();
}

测试结果

在这里插入图片描述

单机按钮后

在这里插入图片描述

编写代码思路

  • 在主窗口中加入一个子窗口的类。
  • 子窗口绑定一个信号与槽函数,用来触发一个信号。
  • 在主窗口中,绑定该信号,用于触发产生一个切换到主窗口的槽函数。
  • 在主窗口中,触发一个信号,用于处理切换到子窗口的槽函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值