qt 是乙個跨平台的 c++ 圖形使用者介面庫,由挪威 trolltech 公司出品,目前包括qt, 基於 framebuffer 的 qt embedded,快速開發工具 qt designer,國際化工具 qt linguist 等部分 qt 支援所有 unix 系統,當然也包括 linux,還支援 winnt/win2k,win95/98 平台。
trolltech 公司在 1994 年成立,但是在 1992 年,成立 trolltech 公司的那批程式設計師 就已經開始設計 qt 了,qt 的第乙個商業版本於 1995 年推出然後 qt 的發展就很快了,下面是 qt 發展史上的一 些里程碑:
1996 oct kde 組織成立
1998 apr 05 trolltech 的程式設計師在 5 天之內將 netscape5.0 從 motif 移植到 qt 上
1998 apr 08 kde free qt **會成立
1998 jul 09 qt 1.40 發布
1998 jul 12 kde 1.0 發布
1999 mar 04 qpl 1.0 發布
1999 mar 12 qt 1.44 發布
1999 jun 25 qt 2.0 發布
1999 sep 13 kde 1.1.2 發布
2000 mar 20 嵌入式 qt 發布
2000 sep 06 qt 2.2 發布
2000 oct 05 qt 2.2.1 發布
2000 oct 30 qt/embedded 開始使用 gpl 宣言
2000 sep 04 qt free edition 開始使用 gpl
基本上,qt 同 x window 上的 motif,openwin,gtk 等圖形界 面庫和 windows 平台上的 mfc,owl,vcl,atl 是同型別的東西,但是 qt 具有下列優點:
優良的跨平台特性:
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 等等。
物件導向
qt 的良好封裝機制使得 qt 的模組化程度非常高,可重用性較好,對於使用者開發來說是非常 方便的。 qt 提供了一種稱為 signals/slots 的安全型別來替代 callback,這使得各個元件 之間的協同工作變得十分簡單。
豐富的 api
qt 包括多達 250 個以上的 c++ 類,還替供基於模板的 collections, serialization, file, i/o device, directory management, date/time 類。甚至還包括正規表示式的處理 功能。
支援 2d/3d 圖形渲染,支援 opengl
大量的開發文件
xml 支援
但是真正使得 qt 在自由軟體界的眾多 widgets (如 lesstif,gtk,ezwgl,xforms,fltk 等等)中脫穎而出的還是基於 qt 的重量級軟體 kde 。 有趣的是,kde 也是使得 trolltech 公司承受巨大壓力的乙個原因。下面我們將來看看這場 著名的自由軟體聖戰 -- "kde/qt .vs. gnome/gtk" 是怎麼發生的。
在 unix 的圖形介面一向是以 mit 的 x window 系統為標準, 可是在商業應用上有兩大流派,一派是以 sun 公司領導的 openlook 陣營,一派是 ibm/hp 領導的osf (open software foundation) 的 motif, 雙方經過多年競爭之後, motif 最終勝出,成為最普遍使用的介面庫, 後來雙方又妥協出乙個 cde(common desktop enviroment) 作為乙個標準的圖形介面。 但是 motif/cder 的**非常昂貴,在這同時微軟的 windows 圖 形介面發展速度非常快,而 unix 界的後起之秀 linux 也急需乙個可靠並且免費的圖形介面。
1996 年 10 月,由開發圖形排版工具lyx的德國人 matthias ettrich 發起了 kde 計畫。 kde 的全稱為 k desktop environment,可以看出是針對 cde。 kde 本身 是採用 gpl 宣言的,但是 kde 卻是使用 qt 來作為其底層庫,因為當時 qt 已經將其 unix 版本自由發布了,但是 qt 並不遵循 gpl, 因此 kde 被很多自由軟體的作者攻擊,認為利用非自 由軟體開發違背了 gpl 的精神,於是 gnu 的狂熱信徒兵分兩路,一路是去製作 harmonny,試圖重寫一套相容於 qt 的替代品,另一路是由乙個 26 歲的墨西哥程式設計師 miguel de icaza 領導 下重新開發一套叫 gnome(gnu network object enviroment)來替代 kde。
由於 linux 界的老大 redhat 不喜歡 kde/qt 的版權,因此 redhat 甚至專門派出了幾個全職程式設計師來加入 gnome 進行開發工作,於是一場同 motif vs openlook 相似的聖戰就這麼打起來了。 trolltech 為了 kde 曾數次修改 qt 的版權,從成立 kde free qt 基 金會到採用 qpl,可謂是費盡心機,但是 gnome 採用的 gtk 一開始就是完全的 gpl,因此在這個方 面 gnome 有一定的優勢,加上 qt/kde 採用 c++ 開發,入門的門檻比較高,而 gtk/gnome 採用 c, 因此 gnome 吸引了更多的自由軟體開發者,但是 kde 畢竟先走了一步, 推出的 kde1.1.2 十分穩定, 而當時急忙中推出的 gnome1.0 的系統穩定性奇差,有人甚至笑稱 gnome1.0 還沒有 kde 1.0 alpha 穩定。但是 gnome 後來發展比較快,大有迎頭趕上的勢頭。當時雙方的開發者在網路 上炒得天翻地覆,連 linux 之父 linus 只是說了一句喜歡用 kde 都倍受指責。
到現在為止,這場戰爭還在繼續,相信我們不能很快看到結果。一般說來, 目前 gnome 吸引的公司比較多,但是 kde/qt 的開發的效率和質量比 gnome 高,而且在 office/嵌入式 環境中先走一步,在一定時間內還將處於優勢地位。
那麼對於使用者來說,如何在 qt/gtk 中作出選擇呢?一般來說,如果使用者使用 c++,對庫的穩定性,健壯性要求比較高,並且希望跨平台開發的話,那麼使用 qt 是較好的選擇, 但是值得注意的是,雖然 qt 的 free edition 採用了 gpl 宣言,但是如果你開發 windows 上的 qt 軟體或者是 unix 上的商業軟體,還是需要向 trolltech 公司支付版權費用的。
QT 原始碼編譯 (zz)
from c c code 一 編譯動態發布版 修改編譯選項 mkspecs win32 msvc2010 qmake.conf qmake cflags release o2 os gl mdqmake cflags release with debuginfo o2 os gl md ziqma...
Python發展簡介
python是由guido van rossum在八十年代末和九十年代初,在荷蘭國家數學和計算機科 學研究所設計出來的。python本身也是由諸多其他語言發展而來的,這包括abc modula 3 c c algol 68 smalltalk unix shell和其他的指令碼語言等等。像perl語...
Qt介面程式設計 Qt簡介
qt是什麼 為什麼選擇qt 工具 qt構建器 他負責對原始檔 標頭檔案 介面檔案進行解析生成編譯指令碼。qt設計師 對於帶介面應用程式來說,最純粹的方式是通過c c 來編寫整個專案,但這種方式費時又費力,所以我們一般不這樣做介面,而採用一種畫圖的方式,自動生成對應的 所見即所得。qt介面編譯器 它負...