目标:实现主副窗口之间通过Button按钮进行切换 ,利用connect链接信号槽实现主页面到副页面的切换。相反由副页面不能直接切回主界面,同样的方法不在使用,Qt中,副页面想要返回主页面,需要在点击按钮的时刻,发送一个back()的信号,主界面监听到信号后利用connect返回。
1.在Qt中创建Widget主窗口,并设置窗口大小以及窗口标题,在头文件中维护一个副窗口的指针。代码如下:
widget.h文件中维护下一页面指针(没有直接实现创建)
#ifndef WIDGET_H
#define WIDGET_H
#include"youpage.h"
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//维护下一页面的指针
youpage *pg;
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp中设置窗口的属性等
创建副页面youpage,.h文件中设置返回信号,用于主界面监听,.cpp文件也是和主界面相同的属性等
。然后通过两个界面的按钮实现切换。
.h
#ifndef YOUPAGE_H
#define YOUPAGE_H
#include <QWidget>
class youpage : public QWidget
{
Q_OBJECT
public:
explicit youpage(QWidget *parent = 0);
signals:
void back();
public slots:
};
#endif // YOUPAGE_H
.cpp
#include "youpage.h"
#include<QPushButton>
youpage::youpage(QWidget *parent) :
QWidget(parent)
{
this->setFixedSize(320,588);
this->setWindowTitle("副页面");
QPushButton *bt =new QPushButton("返回主界面",this);
bt->move(120,270);
connect(bt,&QPushButton::clicked,[=](){
emit this->back();
});
}
主界面监听:
#include<QPushButton>
#include"youpage.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton *button=new QPushButton("进入副界面",this);
button->setParent(this);
button->move(120,270);
this->setWindowTitle("主界面");
//设置窗口固定大小
this->setFixedSize(320,588);
//新页面
pg=new youpage;
connect(button,&QPushButton::clicked,[=](){
this->hide();
pg->show();
});
//监听副页面发出的信号
connect(pg,&youpage::back,[=](){
pg->hide();
this->show();
});
最终结果如下: