目前我接触到的基本都是在一个页面上进行操作的,这样好象有点单调,所以就弄出了个可以将两个页面互相切换的窗口啦。
我们先像平常一眼,先弄个页面出来,并且定义一个按钮,再新建一个cpp文件,做为子窗口 ,如下所示。
在子页面也要定义一个按钮,用于切回到主页面,再写个方法,还要在头文件些一个信号
void sendSolt();
signals:
/* 信号必须有signals关键字来声明
* 信后没有返回值,但可以有参数
* 信号就是函数的声明,只需声明,,无需定义
* 使用:关键字 emit mySignal();
* 信号可以重载
*/
void mySignal();
然后去构造函数中实现,还有一个方法。
SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
resize(400,400);
this->setWindowTitle("小弟");//标题
b.setParent(this);
b.setText(tr("切换主窗口"));
connect(&b,&QPushButton::clicked,this,&SubWidget::sendSolt);
}
void SubWidget::sendSolt()
{
emit mySignal();
}
在主页面实现:
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
resize(400,400);
this->setWindowTitle("Boss");
b2.setParent(this);
b2.setText("切换子窗口");
connect(&b2,&QPushButton::released,this,&MainWidget::Change);//这个呢就是在主页面点击按钮,主页面隐藏,子页面显示
connect(&subwin,static_cast<void (SubWidget::*)()>
(&SubWidget::mySignal),this,&MainWidget::dealsub);// 这个呢就是在子页面点击按钮,子页面隐藏,主页面显示
}
void MainWidget::Change()
{
subwin.show();
this->hide();
}
void MainWidget::dealsub()
{
subwin.hide();
this->show();
}
这样就可以实现在两个不同页面来回切换啦。