Qt:基本介紹


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快速入門》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM