实现两个窗口切换

点击查看代码
//main.cpp
#include "parentwindow.h"
#include <QApplication>

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

    return a.exec();
}
//下面是两个类,一个父窗口parentwindow和子窗口subwindows
//父窗口
//头文件
#ifndef PARENTWINDOW_H
#define PARENTWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <subwindow.h>
class ParentWindow : public QMainWindow
{
    Q_OBJECT

public:
    ParentWindow(QWidget *parent = 0);
    ~ParentWindow();
private:
    QPushButton ptn;
    subwindow subw;
public slots:
    void openSubWind();
    void dealSubWind();
};

#endif // PARENTWINDOW_H
//cpp文件
#include "parentwindow.h"
#include <QPushButton>
ParentWindow::ParentWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(400,400);
    setWindowTitle("父窗口");

    ptn.setText("打开子窗口");
    ptn.move(100,100);
//    ptn.resize(50,50);
    ptn.setParent(this);

    connect(&ptn,&QPushButton::clicked,this,&ParentWindow::openSubWind);//连接按钮信号到打开子窗口
    connect(&subw,&subwindow::subsig,this,&ParentWindow::dealSubWind);

}

ParentWindow::~ParentWindow()
{

}

void ParentWindow::openSubWind()
{
    subw.setWindowTitle("子窗口");
    subw.show();
    this->hide();

}

void ParentWindow::dealSubWind()
{
    subw.hide();
    this->show();
}

//子窗口
//头文件
#ifndef SUBWINDOW_H
#define SUBWINDOW_H

#include <QWidget>
#include <QPushButton>
class subwindow : public QWidget
{
    Q_OBJECT
public:
    explicit subwindow(QWidget *parent = nullptr);
private:
    QPushButton ptn;
signals:
    void subsig();
public slots:
    void DealSubBtnSig();
};

#endif // SUBWINDOW_H
//cpp文件
#include "subwindow.h"

subwindow::subwindow(QWidget *parent) : QWidget(parent)
{
    this->resize(400,400);
    ptn.setText("打开父窗口");
    ptn.move(100,100);
    ptn.setParent(this);

    connect(&ptn,&QPushButton::clicked,this,&subwindow::DealSubBtnSig);
}

void subwindow::DealSubBtnSig()
{
    emit subsig();

}
构造是父窗口有按钮和子窗口对象,并且父窗口有两个槽函数,一个槽函数打开子窗口关闭父窗口,一个槽函数关闭子窗口,打开父窗口。信号和槽之间通过connect连接 子窗口内部有按钮对象,一个信号和一个槽(这个槽接受按钮点击信号并且发送信号)
posted on 2022-07-26 14:47  hold涛  阅读(467)  评论(0)    收藏  举报