Qt是什么?
Qt 是一個跨平台的 C++ 框架(C++庫),主要用來開發圖形用戶界面(Graphical User Interface,GUI)程序,也可以開發不帶界面的命令行(Command User Interface,CUI)程序。
Qt是跨平台的,支持很多操作系統,包括電腦系統 Windows、Linux、Unix,智能手機系統 Android、iOS、WinPhone, 嵌入式系統 QNX、VxWorks 等等。
Qt雖然是使用的C++語言,但不是使用的標准C++,Qt進行了一定程度的“擴展”。雖然如此,但C++仍然是基礎。
目前最新的版本是 Qt5。Qt5 還包含了很多小版本,其中推薦 Qt5.6 或 Qt5.9,這兩個版本是 LTS 版本(即長期支持版本),Bug較少,相對穩定。
Qt可以做什么
Qt 雖然經常被當做一個 GUI 庫,用來開發圖形界面應用程序,但這並不是 Qt 的全部;Qt 除了可以繪制漂亮的界面(包括控件、布局、交互),還包含很多其它功能,比如多線程、訪問數據庫、圖像處理、音頻視頻處理、網絡通信、文件操作等,這些 Qt 都已經內置了。
1997年,Qt 被用來開發 Linux 桌面環境 KDE,大獲成功,使 Qt 成為 Linux 環境下開發 C++ GUI 程序的事實標准。
在windows操作系統上下面的程序都使用 Qt 開發:WPS、YY語音、Skype、豆瓣電台、蝦米音樂、淘寶助理、千牛、暴雪的戰網客戶端、VirtualBox、釘釘等。
在Linux和嵌入式Qt也是主力軍,廣泛應用於消費類電子、工業控制、軍工電子、電信/網絡/通訊、航空航天、汽車電子、醫療設備、儀器儀表等相關行業。
Qt雖然也支持手機操作系統,但是還是不及手機平台自己的開發工具方便
總起來說,Qt 主要用於桌面程序開發和嵌入式開發。
Qt的歷史
Qt最早是 1991 年由兩個挪威人 Eirik Chambe-Eng 和 Haavard Nord 開發的, 他們隨后於 1994 年 3 月 4 號正式成立奇趣科技公司(Trolltech)。Qt 原本是商業授權的跨平台開發庫, 在 2000 年奇趣科技公司為開源社區發布了遵循 GPL(GNU General Public License)許可證的開源版本。在 2008 年,諾基亞公司收購了奇趣科技公司,並增加了 LGPL(GNU Lesser General Public License)的授權模式。因為諾基亞公司的問題,Qt 商業授權業務也於 2011 年 3 月出售給了芬蘭 IT 服務公司 Digia。最后 Digia 於 2014 年 9 月宣布成立 Qt Company 全資子公司,獨立運營 Qt 商業授權業務。經過 20 多年的發展,Qt 已經成為最優秀的跨平台開發框架之一,在各行各業的項目開發中得到廣泛應用。
GPL 和 LGPL
GPL 授權:版本的軟件一定還是 GPL 的開源軟件,你用Qt寫的程序必須開源
LGPL 授權:(第一個 L 可以叫 Lesser 寬松版或 Library 開發庫版)。使用 Qt 官方動態鏈接庫,不必開放商業代碼。如果修改了動態鏈接庫就必須開源。
Qt和MFC對比
Qt 已經封裝了底層細節,簡單易學,可以制作出精美的界面,一次編寫到處運行。
MFC 只能在win上運行,這個框架只是給 Windows API 加了一層簡單的包裝,命名比較混亂,學習的話需要比較強的winAPI基礎,以及十幾年沒有維護。
Qt開發過程及工具
編寫C++Qt程序 -> uic根據.ui文件生成C++ 代碼文件 -> moc翻譯成原生c++代碼文件 -> qmake根據.pro文件生成相應的 Makefile -> MinGW編譯全部代碼 -> 生成程序
工具 | 描述 |
---|---|
uic | User Interface Compiler,用戶界面編譯器,用於把.ui的xml界面描述文件翻譯成c++代碼文件 |
moc | Meta-Object Compiler,元對象編譯器,用於把qt的特殊語法(Qt 信號/槽機制、運行時類型定義、動態屬性系統)翻譯成原生c++語法 |
qmake | 核心的項目構建工具,可以生成跨平台的 .pro 項目文件,並能依據不同操作系統和編譯工具生成相應的 Makefile,用於構建可執行程序或鏈接庫。 |
MinGW | windows平台下的一種c、c++語言編譯器 |
rcc | Resource Compiler,資源文件編譯器,負責在項目構建過程中編譯 .qrc 資源文件,將資源嵌入到最終的 Qt 程序里。 |
qtcreator | 集成開發環境,包含項目生成管理、代碼編輯、圖形界面可視化編輯、 編譯生成、程序調試、上下文幫助、版本控制系統集成等眾多功能, 還支持手機和嵌入式設備的程序生成部署。 |
assistant | Qt 助手,幫助文檔瀏覽查詢工具,Qt 庫所有模塊和開發工具的幫助文檔、示例代碼等都可以檢索到,是 Qt 開發必備神器,也可用於自學 Qt。 |
designer | Qt 設計師,專門用於可視化編輯圖形用戶界面(所見即所得),生成 .ui 文件用於 Qt 項目。 |
linguist | Qt 語言家,代碼里用 tr() 宏包裹的就是可翻譯的字符串,開發人員可用 lupdate 命令生成項目的待翻譯字符串文件 .ts,用 linguist 翻譯多國語言 .ts ,翻譯完成后用 lrelease 命令生成 .qm 文件,然后就可用於多國語言界面顯示。 |
特殊術語
Makefile: 即生成腳本,雖然可以直接調用編譯器如 g++ 編譯程序,但是如果項目里的代碼文件變多了, 哪些代碼文件更新了需要重新編譯,哪些代碼沒有改不需要重新編譯等等, 靠程序員自己記憶去處理是比較麻煩的事,還有哪些代碼需要預處理或是鏈接哪些庫文件, 這些都是繁雜的過程。為了規范程序的編譯生成過程,產生了規范化的生成腳本,就是 Makefile , 生成器 make 可以依據規范的 Makefile 自動生成目標程序或庫文件。 簡單的說,就是定義好 Makefile ,讓程序員只需要去關注如何編寫代碼, 而生成程序過程中的臟活累活都交給 make 程序。現在 Makefile 通常都有工具自動生成,如 qmake 工具, 這樣就大量減輕了程序員的負擔。
Project:即項目(或叫工程),這里的項目是指為實現某個相對獨立功能的程序代碼合集,這些代碼不單單是放在一塊, 而是有相互之間的關聯性,並且有專門負責管理該項目的項目文件,比如 Qt 使用 .pro 文件管理項目, VC++ 則使用 .vcproj 作為項目文件。集成開發環境通常都是依據項目文件(.pro/.vcproj)管理和構建項目。
Qt獲取
中國科學技術大學:http://mirrors.ustc.edu.cn/qtproject/
清華大學:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大學:https://mirrors.bit.edu.cn/qtproject/
中國互聯網絡信息中心:https://mirrors.cnnic.cn/qt/
Qt演示視頻:https://space.bilibili.com/305085009?from=search&seid=11473363199208167658
參考
https://doc.qt.io/
http://c.biancheng.net/view/1792.html
https://qtguide.ustclug.org/
《Qt Create快速入門》