实现目标
- 首先显示一个主窗口,在该窗口上创建一个按钮,然后按下该按钮,该主窗口隐藏,显示另一个窗口。
- 在另一个窗口上也有一个按钮,当按下该按钮的时候,该窗口隐藏,显示原来的主窗口。
实现步骤
项目结构
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();
}
测试结果
单机按钮后
编写代码思路
- 在主窗口中加入一个子窗口的类。
- 子窗口绑定一个信号与槽函数,用来触发一个信号。
- 在主窗口中,绑定该信号,用于触发产生一个切换到主窗口的槽函数。
- 在主窗口中,触发一个信号,用于处理切换到子窗口的槽函数。