01窗口切换
点击bossBtn按钮关闭主窗口,打开子窗口;
点击subBtn按钮关闭子窗口,打开主窗口;
main
#include "mainwindow.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
MainWindow .h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QPushButton>
#include "SubWidget.h"
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void showSubWidget();
void showMainWidget();
public:
QPushButton *_bossBtn;
SubWidget* _subWidget;//包含在MainWindow下,所以为小弟,子窗口
};
#endif // MAINWINDOW_H
MainWindow .cpp
#include "mainwindow.h"
#include <QHBoxLayout>
#include "SubWidget.h"
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
_bossBtn = new QPushButton(tr("BOSS"));
QHBoxLayout *hLyt = new QHBoxLayout();
hLyt->addStretch();
hLyt->addWidget(_bossBtn);
hLyt->addStretch();
connect(_bossBtn, SIGNAL(pressed()), this, SLOT(showSubWidget()));
//处理子窗口的信号
_subWidget = new SubWidget();
connect(_subWidget, SIGNAL(mySignal()), this, SLOT(showMainWidget()));
this->setLayout(hLyt);
this->setWindowTitle(tr("MainWidget"));
this->setFixedSize(1000, 1000);
}
MainWindow::~MainWindow()
{
}
void MainWindow::showSubWidget()
{
this->hide();
_subWidget->show();
}
void MainWindow::showMainWidget()
{
_subWidget->hide();
this->show();
}
SubWidget.h
#pragma once
#include <QWidget>
#include <QPushButton>
class SubWidget :public QWidget
{
Q_OBJECT
public:
SubWidget(QWidget *parent=0);
~SubWidget();
private slots:
void showMainWidget();
signals:
void mySignal();
private:
QPushButton *subBth;
};
SubWidget.cpp
#include "SubWidget.h"
#include <QHBoxLayout>
SubWidget::SubWidget(QWidget *parent)
: QWidget(parent)
{
subBth = new QPushButton(tr("subBtn"));
QHBoxLayout* hLyt = new QHBoxLayout();
hLyt->addStretch();
hLyt->addWidget(subBth);
hLyt->addStretch();
connect(subBth, SIGNAL(clicked()), this, SLOT(showMainWidget()));
this->setLayout(hLyt);
this->setFixedSize(500, 500);
this->setWindowTitle(tr("SubWidget"));
}
SubWidget::~SubWidget()
{
}
void SubWidget::showMainWidget()
{
emit mySignal();
}