最近要利用Qt进行上位机配置软件的开发,但是发现自己虽然做了一些基于Qt的PC软件开发,但是一直没有系统性的总结和学习过Qt,这样下去,积累的经验和知识随着时间推移又会丢失,所以趁着这段时间边学边总结一下。
以下总结基于Qt5.6.0,采用Qt creator进行开发。
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退出,然后显示主窗口,主窗口点击“弹出一个对话框”,如此周而复始。。。
!](https://img-blog.csdn.net/20181023221307818?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTUxMDgxMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
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_Hwidget.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_Hmain.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(); }main.cpp中创建的dlg是激活进入主窗口的,后续的dlg则是由由于点击了主窗口中的push button而创建的,每次进入主窗口后dialog都会退出,这个循环的过程务必想清楚。