Qt5-Qt Creator进行多窗口编程


版本

版本

作者

时间

备注

0.1

loon

2018.10.23

初稿

目录

文章目录

一、前言

最近要利用Qt进行上位机配置软件的开发,但是发现自己虽然做了一些基于Qt的PC软件开发,但是一直没有系统性的总结和学习过Qt,这样下去,积累的经验和知识随着时间推移又会丢失,所以趁着这段时间边学边总结一下。

以下总结基于Qt5.6.0,采用Qt creator进行开发。

二、Qt多窗口编程

1、示例思路

New Project(新工程)–>选择application(应用程序)–>选择默认的Qt widgets application(窗口小部件应用程序)–>选择工程路径和工程名–>基类选择QWidget即可,暂时不使用版本管理工具,然后直接完成即可。

然后鼠标右击工程文件夹,选择添加新文件,然后选择Qt–>Qt设计师界面类–>Dialog without Buttons(不要按钮的会话框)–>类名设置为myDlg,然后下一步病点击完成即可调到mydlg.ui界面中。

Qt5-Qt Creator进行多窗口编程_多窗口

鼠标拖入一个Push Button,然后双击修改其文本为“进入主窗口”,在右侧修改其objectName为enterBtn。

然后在下面的signal & Slots Editor中“+”一个信号和槽,并将其关联,关联我们刚刚创建的enterBtn的clicked信号给myDlg,这样当我们点击该button时将信号发送给mydlg,然后mydlg退出进入主窗口。

Qt5-Qt Creator进行多窗口编程_Qt5多窗口实现_02

主窗口也拖入一个push button,键入文本“弹出一个对话框”,然后右键push button选择转到槽,在该槽函数中显示一个新创建的dlg,该dlg和之前的dlg一样,也有一个“进入主窗口”的button,这样点击后本次dlg退出,然后显示主窗口,主窗口点击“弹出一个对话框”,如此周而复始。。。

Qt5-Qt Creator进行多窗口编程_#include_03

2、示例预期结果


3、示例代码

mydlg.h:

#ifndef
#define

#include <QDialog>

namespace Ui {
class myDlg;
}

class myDlg : public QDialog
{
Q_OBJECT

public:
explicit myDlg(QWidget *parent = 0);
~myDlg();

private:
Ui::myDlg *ui;
};

#endif// MYDLG_H

widget.h:

#ifndef
#define

#include <QWidget>
#include "mydlg.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private slots:
void on_pushButton_clicked();

private:
Ui::Widget *ui;
myDlg myD2;
};

#endif// WIDGET_H

main.cpp:

#include "widget.h"
#include <QApplication>
#include "mydlg.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
myDlg myD;

if(myD.exec() == QDialog::Accepted)
{
w.show();
return a.exec();
}
else
return 0;
}

widget.cpp:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}

Widget::~Widget()
{
delete ui;
}

void Widget::on_pushButton_clicked()
{
myD2.show();
}

4、最后

main.cpp中创建的dlg是激活进入主窗口的,后续的dlg则是由由于点击了主窗口中的push button而创建的,每次进入主窗口后dialog都会退出,这个循环的过程务必想清楚。