說到Qt,不能不說到C++,這門偉大的語言。因為其面向對象的編程思想和陡峭的學習曲線,一開始學習起來很是吃力。Qt從QT4開始基本封裝了很多C++的工具庫和界面庫,而且支持跨平台,這是它最大的優勢。相比於古老的MFC和使用C#的WPF來說,我更喜歡Qt來進行C++的界面設計,這也是我從新開始拾起Qt學習之路的原因。
說完了感受和學習的原因,就開始介紹Qt5了。我這裡只做簡單的介紹,重要的還是在學習過程中體會Qt的編程邏輯和設計思想。
Qt,坦白來說,並不只是一個界面庫,他是C++編程思想的集大成者。它是得到完善的C++應用程序框架。使用Qt,在一定程度上你獲得的是一個“一站式”、“全方位”的解決方案,STL。string、XML、數據庫、網絡這些零散的功能都包含在Qt中,並且得到了封裝,一共開發者使用。
跨平台GUI通常有三種實現策略,分別是:
Qt 和 wxWidgets 一樣,也是一個標准的 C++ 庫。但是它的語法類似於 Java 的 Swing,十分清晰,而且使用信號槽(signal/slot)機制,讓程序看起來很明白——這也是很多人優先選擇 Qt 的一個很重要的原因。不過,所謂“成也蕭何,敗也蕭何”。這種機制雖然很清楚,但是它所帶來的後果是你需要使用 Qt 的 moc 對程序進行預處理,才能夠再使用標准的 make 或者 nmake 進行正常的編譯,並且信號槽的調用要比普通的函數調用慢大約一個數量級(Qt 4 文檔中說明該數據,但 Qt 5 尚未有官方說明)。Qt 的界面也不是原生風格的,盡管 Qt 使用 style 機制十分巧妙地模擬了原生界面。另外值得一提的是,Qt 不僅僅能夠運行在桌面環境中,還可以運行在嵌入式平台以及手機平台。
Qt 第一版於 1991 年由 Trolltech (奇趣科技)發布。後來在 2008 年,Nokia 斥資 1.5 億美元收購 TrollTech,將 Qt 應用於 Symbian 程序開發。2012 年 8 月 9 日,Nokia 將 Qt 以 400 萬歐元的價格出售給 Digia。
伴隨著 Qt,一直有兩種授權協議:商業授權以及開源授權。在 Qt 的早期版本,商業授權包含一些開源授權不提供的組件,但是在近期版本則不存在這個問題。以往人們對 Qt 的開源授權多有诟病。早期版本的 Qt 使用與 GPL 不兼容的協議授權,這直接導致了 KDE 與 GNOME 的戰爭(由於 Linux 使用 GPL 協議發布,GPL 協議具有傳染性,作為 Linux 桌面環境的 KDE 卻是基於與 GPL 不兼容的 Qt 開發,這就不遵守 GPL 協議)。不過,現在 Qt 的開源版本使用的是 GPLv3 以及 LGPL 協議。這意味著,你可以將 Qt 作為一個庫連接到一個閉源軟件裡面。可以說,Qt 協議的爭議已經不存在了。
上面是兩種Qt,第一種是使用mingw編譯和調試開發的Qt,第二種(紅線中)是使用msvc也就是vs調試和編譯的Qt。開始學習的建議安裝第一種,自帶gcc編譯器和gdb調試器。安裝過程就不說了,一路綠燈就行,安裝完之後的狀態如下圖。
一直往下,中間過程就是自己改一下項目的名字和文件名字,直到出現下面的圖,就是創建完成了。
上圖是創建好的工程,這樣就是可以運行的。
這裡說一下mingw版本的配置,此外msvc版本的Qt的編譯器和調試器都是msvc(我的具體版本是MSVC2013)。
我的是32bit,然後所有的編譯器和調試器都是套件自帶的,不用另行下載。
好了,Qt的開始工作做好了,就可以開始學習了,就先到這裡。