Qt5-Qt Creator进行多窗口编程

xiaoxiao2022-06-11  21

Qt5-Qt Creator进行多窗口编程


版本

版本作者时间备注0.1loon2018.10.23初稿

目录

文章目录

Qt5-Qt Creator进行多窗口编程版本目录一、前言二、Qt多窗口编程1、示例思路2、示例预期结果3、示例代码4、最后

一、前言

最近要利用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界面中。

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

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

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

2、示例预期结果

!](https://img-blog.csdn.net/20181023221307818?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTUxMDgxMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

3、示例代码

mydlg.h:

#ifndef MYDLG_H #define MYDLG_H #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 WIDGET_H #define WIDGET_H #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都会退出,这个循环的过程务必想清楚。

转载请注明原文地址: https://www.6miu.com/read-4930831.html

最新回复(0)