赞
踩
Qt 中我们经常会用到好几个界面,那么这几个界面之间来回切换就是一个经常出现的问题。之前我也总是被这个问题困扰,现在写一个样例程序当作一种解决方案,希望能给大家启发。
首先我定义了两个界面,一个主界面,一个是子界面,我希望它们两个能互相切换。主界面和子界面如图所示:
![在这里插入图片描述](https://img-blog.csdn.net/20171217162140923?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuemhlbjc1NDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
子界面:
![在这里插入图片描述](https://img-blog.csdn.net/20171217162208482?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuemhlbjc1NDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
主要程序如下所示:
首先是主界面:在Mainwindow里面,当点击pushbutton之后,应该做这么几件事:第一件事是主界面消失(当然根据实际情况你也可以选择让它关闭)。第二件事是new一个子界面出来,并且让他显示。还有最重要的是定义一个信号与槽,使得在子界面点击 “转到主界面” 按钮的时候,主界面能显示。所以程序如下所示:
-
void MainWindow::on_pushButton_clicked()
-
{
-
this->hide();
//主界面关闭
-
video *videodlg =
new video(
this);
//新建子界面
-
connect(videodlg,SIGNAL(sendsignal()),
this,SLOT(reshow()));
//当点击子界面时,调用主界面的reshow()函数
-
videodlg->show();
//子界面出现
-
}
-
#ifndef VIDEO_H
-
#define VIDEO_H
-
-
#include <QDialog>
-
-
namespace Ui {
-
class video;
-
}
-
-
class video :
public QDialog
-
{
-
Q_OBJECT
-
-
public:
-
explicit video(QWidget *parent = 0);
-
~video();
-
private slots:
-
void on_pushButton_clicked();
-
signals:
-
void sendsignal();
//这个函数用户向主界面通知关闭的消息
-
-
private:
-
Ui::video *ui;
-
};
-
-
#endif // VIDEO_H
-
#include "video.h"
-
#include "ui_video.h"
-
-
#include <QDebug>
-
-
video::video(QWidget *parent) :
-
QDialog(parent),
-
ui(
new Ui::video)
-
{
-
ui->setupUi(
this);
-
this->setAttribute(Qt::WA_DeleteOnClose,
1);
-
qDebug()<<
"构造了video窗口"<<
endl;
-
}
-
-
video::~video()
-
{
-
delete ui;
-
-
}
-
-
void video::on_pushButton_clicked()
-
{
-
emit sendsignal();
-
this->close();
-
}
-
void MainWindow::reshow(){
-
this->show();
-
}
但是对于子界面情况就不一样了,子界面我觉得既可以销毁也可以隐藏,这取决于实际的工程你想要怎么样,在这里我用的是销毁。每次销毁之后,当主界面点击跳转子界面的按钮的时候再进行重新构建子界面,所以我用的是close()函数。但是这里也需要用到这句话:
this->setAttribute(Qt::WA_DeleteOnClose,1);
总之,这里记录了关于Qt多界面来回切换的思路,如果有人觉得有更好的从一个界面跳转到另一个界面的方法一定要告诉我,谢谢了。文中还有对于界面关闭和销毁的一点看法,欢迎大家拍砖。
转载链接:https://blog.csdn.net/hanzhen7541/article/details/78825799
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。