QT 5.9学习笔记
QT 5.9學習筆記
- 寫在前面
- S1:初識QT:QT簡介
- S2:QT在Windows和Linux平臺下的安裝
- Qt調出模態與非模態對話框
寫在前面
本文章為我在學習QT5.9時的記錄文章,里面會涉及所有在學習過程中有關安裝,使用,編程的相關知識點和技巧,在一套教程學習完畢后,我將再次整理本筆記,將其中重要的坑點,知識點和一些技巧和問題解決等整理成專欄,敬請大家靜待花開,謝謝!
S1:初識QT:QT簡介
文本來源:百度百科和博客園(https://www.cnblogs.com/yyc954330712/p/9550767.html)
Qt 是一個跨平臺應用程序和 UI 開發框架。使用 Qt 您只需一次性開發應用程序,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統部署這些應用程序。
一、Qt的簡介
Qt是一個跨平臺的C++圖形用戶界面應用程序框架。它為應用程序開發者提供建立藝術級圖形界面所需的所有功能。它是完全面向對象的,很容易擴展,并且允許真正的組件編程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平臺上的 MFC,OWL,VCL,ATL 是同類型的東西。
二、Qt的由來和發展
Haavard Nord 和Eirik Chambe-Eng于1991年開始開發"Qt"。
1994年3月4日創立公司,早名為Quasar Technologies,然后更名為Troll Tech,然后在改為Trolltech,中文名是“奇趣科技”。
2008年6月17日被NOKIA公司收購,以增強該公司在跨平臺軟件研發方面的實力,更名Qt Software。
該工具包名為Qt是因為字母 Q在Haavard的Emacs字體特別漂亮,而“t”代表“toolkit”,靈感來自Xt,X toolkit。
2009年5月11日,諾基亞Qt Software 宣布 Qt源代碼管理系統面向公眾開放,Qt 開發人員可通過為 Qt 以及與 Qt 相關的項目貢獻代碼、翻譯、示例以及其他內容,協助引導和塑造 Qt未來的發展。為了便于這些內容的管理,Qt Software 啟用了基于 Git 和 Gitorious 開源項目的Web 源代碼管理系統。
在推出開放式 Qt 代碼庫的同時,Qt Software 在其網站發布了其產品規劃(Roadmap)。其中概述了研發項目中的新功能,展現了現階段對 Qt 未來發展方向的觀點,以期鼓勵社區提供反饋和貢獻代碼,共同引導和塑造 Qt 的未來。
三、為什么選擇Qt
1、本質上來說, Qt是一個跨平臺的C++應用程序開發框架,有時又被稱為C++部件工具箱。Qt被用在KDE桌面環境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的開發中,使用 Qt ,只需一次性開發應用程序和用戶界面,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統部署這些應用程序。
2、 優良的跨平臺特性,Qt支持下列操作系統: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
3、面向對象,Qt 的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對于用戶開發來說是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件 之間的協同工作變得十分簡單。
4、豐富的 API,Qt 包括多達 250 個以上的 C++ 類,還替供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達式的處理 功能。
5、支持 2D/3D 圖形渲染,支持 OpenGL,大量的開發文檔,XML 支持。
S2:QT在Windows和Linux平臺下的安裝
三種平臺的QT獲取地址:
https://download.qt.io/official_releases/qt/
我安裝的是QT5.9版本
幾點提示:
1.QT實際上分為離線安裝版和在線安裝版,在QTCN中可以找到在線安裝版,我給的網址上是離線安裝包,個人建議下載離線安裝包。
2.建議不要選擇最新版本:
我在Linux系統中安裝最新的QT 5.14.1 嘗試了一些方法,安裝程序也無法運行
換為QT5.9 安裝十分順利。
3.安裝的時候提示注冊或者登陸QT賬號(貌似強制,沒看到如何Skip),所以安裝的時候要聯網。
4.出現選擇組件界面,個人建議全部選中,避免之后缺組件的麻煩
(windows預留15GB安裝,Linux要小于這個值)
就是這個畫面,建議全部打勾:
安裝之后建立一個新的工程試一下,能夠編譯,運行才說明QT安裝的正確,可以往下了。
Qt調出模態與非模態對話框
這里我個人推薦就寫這兩種寫法
非模態:
模態:
WclcomeDialog *dlg = new QDialog; dlg->deleteLater(); dlg->exec();分割線
首先要建立一個Qt設計師類中的Dialog類,然后該布局布局。
有很多方法調出這個Dialog,我們先再給推薦寫法,再都寫上。
模態調用:
這種情況下彈出后一閃而過的原因:
show()函數不會阻塞當前線程,對話框會顯示出來,接著show()函數立即返回,代碼繼續執行槽函數中后續代碼。
dialog 是建立在棧上的,show()函數返回后,當槽函數運行結束后,dialog 超出作用域被析構,因此對話框消失了。
知道了此原因,我們將 dialog 改成堆上建立,就不會出現一閃而過的問題了,如下面例子3
setAttribute()函數設置對話框關閉時,自動銷毀對話框
使用exec()會開始一個新的事件循環,deleteLater()函數會在當前事件循環結束時銷毀該對話框
這種情況下彈出后一閃而過的原因:
如果是 dlg->show(),則只能使用 dlg->setAttribute(Qt::WA_DeleteOnClose);
如果要使用 dialog->deleteLater(),則必須使用 dialog->exec()。
這是因為 deleteLater() 會在事件循環結束時執行,exec()會開始一個新的事件循環,而show() 不開始新的事件循環,所以會一閃而過。
總結
以上是生活随笔為你收集整理的QT 5.9学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNIX环境高级编程-#include
- 下一篇: 朋友问我,斗破苍穹中到底出现了多少次“恐