一、需要另外加上一个新的类,如图:
二、界面部分进行布局
1、主窗口进行界面布局:
2、子窗口进行界面布局:
三、在form类中:
1、在form中的.h文件中:
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = 0);
~Form();
signals:
void mySignal();//子界面发送信号
private slots:
void on_pushButton_clicked();
private:
Ui::Form *ui;
};
#endif // FORM_H
2、在form.cpp中代码部分:
#include "form.h"
#include "ui_form.h"
#include <qDebug>
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
this->resize(QSize(600, 600));//设置界面大小
}
Form::~Form()
{
delete ui;
}
void Form::on_pushButton_clicked()
{
emit mySignal();
qDebug()<<"emit signal";
}
四、在widget类中:
1、在widget.h文件中:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <qDebug>
#include "form.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void ChangeWin();
private:
Ui::Widget *ui;
Form *f;//创建指针对象
};
#endif // WIDGET_H
2、在widget.cpp文件中代码如下:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//this->setParent(parent);
this->resize(QSize(600, 600));
f = new Form();//创建对象进行初始化
connect(f, SIGNAL(mySignal()), this, SLOT(ChangeWin()));
connect(ui->pushButton_2,SIGNAL(pressed()),this,SLOT(close()));
qDebug()<<"enter connect";
}
Widget::~Widget()
{
delete ui;
}
//这个是转到子界面
void Widget::on_pushButton_clicked()
{
this->hide();
f->show();
qDebug()<<"2222";
}
//这个是转到主界面
void Widget::ChangeWin()
{
qDebug()<<"33333";
this->show();
f->hide();
}
五、最后编译如下:
完成!