本條目存在以下問題 ,請協助
改善本條目 或在
討論頁 針對議題發表看法。
此條目
包含指南或教學內容 。 (2018年12月1日 ) 請藉由移除或重寫指南段落來改善條目,或在討論頁 提出討論。
此條目需要更新 。 (2018年12月1日 ) 請更新本文以反映近況和新增内容。完成修改後請移除本模板。
Qt ( ,發音同「cute」[ 3] [ 4] [ 5] )是一个跨平台 的C++ 應用程式開發框架。廣泛用於開發GUI程式,這種情況下又被称为部件工具箱 。也可用於開發非GUI程式,例如控制台工具和伺服器。Qt被用於OPIE 、Skype 、VLC media player 、Adobe Photoshop Elements 、VirtualBox 與Mathematica [ 6] 以及被Autodesk [ 7] [ 8] 、歐洲太空總署 [ 9] 、夢工廠 [ 10] [ 11] 、Google 、HP [ 12] 、KDE 、盧卡斯影業 [ 13] 、西门子公司 [ 14] 、沃尔沃集团 [ 15] , 华特迪士尼动画制作公司 [ 16] 、三星集团 [ 17] 、飞利浦 [ 18] 、Panasonic [ 19] 所使用。
Qt使用標準的C++ 和特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些巨集 。通過語言綁定,其他的程式語言也可以使用Qt。
Qt是自由且開放原始碼的軟體,在GNU較寬鬆公共許可證 (LGPL)條款下發布。所有版本都支援廣泛的編譯器,包括GCC的C++編譯器和Visual Studio捆绑的MSVC编译器。
歷史
時間
Qt版本
1995年
Qt 1.0
1998年7月
Qt 1.4
1999年4月
Qt 1.4.4
1999年6月
Qt 2.0
2000年4月
Qt 2.1
2000年9月6日
Qt 2.2
2001年10月15日
Qt 3.0
2002年11月
Qt 3.1
2003年7月
Qt 3.2
2004年2月
Qt 3.3
2005年6月27日
Qt 4.0
2005年12月
Qt 4.1
2006年10月
Qt 4.2
2007年5月
Qt 4.3
2008年5月
Qt 4.4
2009年3月
Qt 4.5
2009年4月
Qt 4.5.1
2009年12月
Qt 4.6
2010年2月
Qt 4.6.2
2010年6月
Qt 4.6.3
2010年9月
Qt 4.7
2011年5月4日
Qt 4.7.3
2011年12月15日
Qt 4.8
2012年5月22日
Qt 4.8.2
2012年9月13日
Qt 4.8.3
2012年12月19日
Qt 5.0
2013年1月31日
Qt 5.0.1
2013年4月10日
Qt 5.0.2
2013年7月3日
Qt 5.1
2013年8月28日
Qt 5.1.1
2013年12月12日
Qt 5.2
2014年5月20日
Qt 5.3
2014年12月10日
Qt 5.4
2015年7月1日
Qt 5.5
2016年3月16日
Qt 5.6
2016年6月16日
Qt 5.7
2017年1月23日
Qt 5.8
2017年5月31日
Qt 5.9
2017年11月30日
Qt 5.10
2018年5月22日
Qt 5.11
2019年1月31日
Qt 5.12
2019年6月19日
Qt 5.13
2019年12月12日
Qt 5.14
2020年5月26日
Qt 5.15
2020年12月1日
Qt 6.0
2021年4月27日
Qt 6.1
2021年9月28日
Qt 6.2
2022年3月16日
Qt 6.3
2022年9月29日
Qt 6.4
2023年3月30日
Qt 6.5
2023年9月26日
Qt 6.6
2024年3月19日
Qt 6.7
预计 2024年9月25日
Qt 6.8
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[ 20] 。
2009年5月11日,诺基亚Qt Software 宣布Qt原始碼管理系统面向公众开放,Qt开发人员可通过为Qt以及与Qt相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造Qt未来的发展。为了便于这些内容的管理,Qt Software启用了基于Git和Gitorious开源项目的Web原始碼管理系统。
在推出开放式Qt代码库的同时,Qt Software在其網站发布了其产品规划(Roadmap)。其中概述了研发项目中的最新功能,展现了现阶段对Qt未来发展方向的观点,以期鼓励社区提供反馈和贡献代码,共同引导和塑造Qt的未来。2012年8月9日,Digia 宣布已完成对诺基亚 Qt业务及软件技术的全面收购,并计划将Qt应用到Android 、iOS 及Windows 8 平台上。[ 21]
支持平台
使用Qt开发的软件 ,相同的程式碼可以在任何支援的平台 上編譯 與執行,而不需要修改原始碼。會自動依平台的不同,表現平台特有的图形界面 风格。
外部移植
自從諾基亞開放了Qt的原始碼給社群後,Gitorious 上各種移植紛紛出現。下面是其中一部份:
授权模式
Qt开放源代码 ,并且提供自由软件 的用户协议。使得它可以被广泛地应用在各平台上的开放源代码 软件 开发中。
Qt提供三种授权方式。三种授权方式的功能、性能都没有区别,僅在于授权协议的不同。LGPL和GPL是免費发布,商业版則需收取授权费。[ 32] :
Qt商业版 - Qt商业授权适用于开发专属和/或商业软件。此版本适用于不希望与他人共享源代码,或者遵循GNU宽通用公共许可证(LGPL)2.1版或GNU GPL 3.0版条款的开发人员。提供了技術支援服務。可以任意的修改Qt的原始碼,而不需要公開。
GNU LGPL v. 2.1- Qt 4.5.0及以后的版本开始遵循GNU LGPL。LGPL允許鏈結到它的軟體使用任意的許可證,可以被专属软件作为类库引用、发布和销售。可以购买支援服務。
GNU GPL v. 3.0 - 如果您希望将Qt应用程序与受GNU通用公共许可证(GPL)3.0版本条款限制的软件一同使用,或者您希望Qt应用程序遵循该GNU许可证版本的条款,则此版本Qt适用于开发此类Qt应用程序。可以购买支援服務。
Qt模块
经过多年发展,Qt不但拥有了完善的C++ 图形库 ,而且近年来的版本逐渐整合了数据库 、OpenGL 库、多媒体 库、网络 、脚本 库、XML 库、WebKit 库等等,其核心 库也加入了进程间通信 、多线程 等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序 的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere”。
由於各家編譯器規格不同,Qt本身為了跨平台相容性,只能以「最低相容規格」來設計。因此Qt必須具備RTTI、动态创建、Persistence/Serialization的基礎建設,以及建構出自己的容器元件。
下列模組提供一般的軟體開發
QtCore—QtCore模組是所有基於Qt的應用程式的基礎,提供信號與槽的物件間通訊機制、IO、事件和物件處理、多執行緒
QtGui—包含了開發圖形使用者介面應用程式所需的功能。使用其支援的各個平台的原生圖形API。支援反鋸齒、向量形變。支持ARGB顶层widget
QtMultimedia—提供了用於多媒體內容處理的QML類型集和C++類集。同時提供訪問攝像頭及音頻功能的API。包含的Qt音頻引擎支持三維音頻回放及管理。
QtNetwork—提供了網路程式設計功能。支援通用協定,如HTTP、FTP和DNS,包括對非同步HTTP 1.1的支援。與較低層的TCP/IP和UDP協議,如QTcpSocket、QTcpServer和QUdpSocket
QtOpenGL—提供在應用程式中使用OpenGL和OpenGL ES加入3D圖形。在Windows平台上亦支援Direct3D
QtOpenVG-提供OpenVG绘图支持的一个插件
QtScript —包含完全整合的ECMA標準指令碼引擎。提供信號與槽機制簡化物件間通訊和QtScript偵錯程式。
QtScriptTools—額外的Qt Script組件
QtSql—將資料庫整合至應用程式。支援所有主要的資料庫驅動包括ODBC 、MySQL 、PSQL、SQLite 、ibase、Oracle、Sybase、DB2。
QtSvg—支援SVG 格式
QtWebKit—整合WebKit,提供了HTML瀏覽器引擎,便於在原生應用程式中嵌入網路內容和服務。
QtXml—提供了XML文檔的閱讀器和編寫器、支持SAX 和DOM 。
QtXmlPatternsl—提供了XQuery 和XPath 引擎支持。
Phonon —整合Phonon,支援跨平台應用程式播放音訊和視訊內容。Qt5開始不支援Phonon。
Qt3Support—模塊提供兼容Qt 3.х.х版本的程式庫
QtDeclarative [ 33] - engine for declaratively building fluid user interfaces in QML
作業於Qt附帶工具的模組
QtDesigner—提供擴充Qt Designer的類別。
QtUiTools
QtHelp—協助整合線上文件到應用程式中。
QtTest—提供單元測試框架和滑鼠和鍵盤類比功能。整合Visual Studio 和KDevelop 。
圖形使用者介面
Qt的圖形使用者介面的基礎是QWidget。Qt中所有類型的GUI組件如按鈕、標籤、工具列等都衍生自QWidget,而QWidget本身則為QObject的子類別。Widget 負責接收滑鼠,鍵盤和來自窗口系統的其他事件,並描繪了自身顯示在屏幕上。每一個GUI組件都是一個widget ,widget 還可以作為容器,在其內包含其他Widget 。
QWidget不是一個抽象類別。並且可以被放置在一個已存在的使用者介面中;若是Widget 沒有指定父Widget ,當它顯示時就是一個獨立的視窗、或是一個頂層widget 。QWidget顯示能力包含了透明化及Double-Buffering。Qt提供一種託管機制,當Widget 於建立時指定父物件,就可把自己的生命週期交給上層物件管理,當上層物件被釋放時,自己也被釋放。確保物件不再使用時都會被刪除。
訊號與槽
Qt利用訊號與槽(signals/slots)機制取代傳統的callback 來進行物件之間的溝通。当操作事件发生的时候,物件會發送出一個訊號(signal);而槽(slot)則是一個函式接受特定信號並且執行槽本身設定的動作。信号與槽之間,則透過QObject 的靜態方法connect來連結。
訊號在任何執行點上皆可發射,甚至可以在槽裡再發射另一個訊號,訊號與槽的連結不限定為一對一的連結,一個訊號可以連結到多個槽或多個訊號連結到同一個槽,甚至訊號也可連接到訊號。
以往的callback 缺乏类型安全,在呼叫處理函數時,無法確定是傳遞正確型態的參數。但訊號和其接受的槽之間傳遞的資料型態必須要相符合,否則編譯器會提出警告。訊號和槽可接受任何數量、任何型態的參數,所以訊號與槽机制是完全类型安全。
訊號與槽機制也確保了低耦合性,發送信号的類別並不知道是哪個槽會接受,也就是說一個信号可以呼叫所有可用的槽。此機制會確保當在"連接"信号和槽時,槽會接受信号的參數並且正確執行。
布局管理
布局管理類別用於描述一個應用程序的用戶界面中的Widget是如何放置。當視窗縮放時,布局管理器會自動調整widget的大小、位置或是字型大小,確保他們相對的排列和用戶界面整體仍然保有可用性。
Qt內建的布局管理類型有:QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout。這些類別繼承自QLayout,但QLayout非繼承自QWidget而是直接源於QObject。他們負責widget的幾何管理。想要創建更複雜的版面配置,可以繼承QLayout來自訂版面配置管理員。
QHBoxLayout:配置widget成橫向一列
QVBoxLayout:配置widget成垂直一行
QGridLayout:配置widget在平面網格
QFormLayout:配置widget用於2欄標籤- field
Main Window
Qt提供了下列主視窗管理和相關的用戶界面組件的類別:
QMainWindow:提供一個標準的應用程式主視窗。當中可以包括選單、工具列、狀態列、停駐元件等元件。
QDockWidget:提供了一個可用於創建彈簧工具調色板或輔助窗口的widget。Dock widgets可以移、關閉、浮動為外部視窗。
QToolBar:提供了一個通用的工具欄widget,可以放入一些不同的action有關的工具,如按鈕、下拉選單、comboboxes和spin boxes。
Graphics View
Graphics View提供了用于管理和交互大量定制的2D图形对象的平面以及可视化显示对象的视图widget,并支持缩放和旋转功能。
整个Graphics View框架提供一個以Item為基礎的model-view設計。由3个主要的類別组成,分别是QGrphicsItem、QGraphicsScene和QGraphicsView。若干View可以顯示一個Scene,Scene中則包含不同幾何形狀的Item。
該框架包括一個事件傳播的架構,讓在Scene上的Item有雙精度的互動能力。Item可以處理鍵盤事件,鼠標按下、移動、釋放和雙擊事件,他們也可以跟踪鼠標移動。
Graphics View使用BSP(二进制空间划分)树可非常快速地找到Item,因此即使是包含百万个Item的大型Scene,也能实时图形化显示。
KDE中的Plasma 亦是基於Graphics View實現的。
無障礙環境
無障礙環境需要無障礙兼容的應用程式、輔助技術、以及輔助工具之間的合作。應用程式通常不會直接溝通輔助工具,而是通過一個輔助技術,這是一個應用程式和工具之間資訊交流的橋樑。使用者界面元素相關訊息,例如按鈕和滾動條,使用輔助技術來顯示。Qt支持Windows上的Microsoft Active Accessibility(MSAA)和Mac OS X上Mac OS X Accessibility。
無障礙相容的應用程式稱為AT-Servers,而輔助工具被稱為AT-Clients。Qt應用程式通常會是一個AT-Server,但特別的程式也可能如同AT-Client方式工作。
國際化
Qt的字體引擎能夠在同一時間正確的顯示各種不同的書寫系統。並且Qt內部使用Unicode編碼來儲存文字。
Qt的多國語言支援技術,可以讓應用程式中的文字全部使用英文撰寫,能夠在完全不需修改程式的狀況下,改變整個應用程式中的文字為另一個語系的文字,並能夠協助處理不同語言的單、複數問題。
獨立的翻譯檔案使得新增支援語言相當容易,同時翻譯檔案(.ts)為XML格式可以直接編輯或使用Qt Liguist進行翻譯,可讓無程式開發能力的翻譯者亦能獨自完成翻譯。Qt附帶的工具程式就能夠自動抽取需要翻譯的文字產生翻譯檔案。
多執行緒
Qt的執行緒支持是獨立於平台的執行緒類別,采用訊號與槽机制,实现类型安全的執行緒间通讯。這使得它易於開發具可移植性的多執行緒Qt應用程式。並能充分利用多核架构,获得最佳运行性能,還能根据可用的处理器内核数自动调整使用的執行緒数。多執行緒程式設計也是一個执行耗時操作而不会冻结用户界面的有效典范。
語言綁定
除了C++ 外,Qt还为其它多种计算机语言 提供了应用程序接口 ,您也可以使用这些语言开发Qt应用程序 。
工具
Qt提供了一些命令列和圖形工具,以方便和加速開發的過程。
Qt Creator :輕量級的Qt/C++ IDE 開發環境。
qmake :跨平台构建工具,可简化跨不同平台进行项目开发的构建过程。
Qt Designer:界面設計師。可以用拖拽的方式將Widget排放在界面上,支援版面配置,支援信號與槽編輯。
Qt Assistant:Qt助手。Qt在線幫助文件查看工具。
Qt Liguist:翻譯工具。讀取翻譯檔案(如.ts、.po)並為翻譯人員提供友好的翻譯介面。
lupdate:从原始碼文件或其他资源檔案中提取需要翻译的字符串,并将之存入xml格式的.ts檔案中。
lrelease:负责将.ts檔案转化为程序使用的.qm檔案。.qm檔會去掉.ts檔中所有的空白和未翻譯的內容,並將存儲格式壓縮。
lconvert:用於翻譯檔案之間的格式轉換。
QVFb:虚拟帧缓存设备,模擬framebuffer裝置(尺寸、色深),還可以透過skin模擬硬體鍵盤的布局(包括特殊的按鍵),可以便捷在桌面系統機器上開發嵌入式程式
makeqpf:創建用於嵌入式設備的qpf格式。qpf是一種預先渲染的字體,直接保存成二進位內容,使用的時候可以用記憶體對映載入,從載入到繪製的過程不需要計算。
uic:User Interface Compiler。從用戶界面的檔案(.ui)生成C++代碼。
rcc:Resource Compiler。rcc工具根据.qrc檔案的内容将相关的資源在編譯過程中嵌入到Qt應用程序。
qtconfig:基於X11的Qt的配置工具和在線幫助。
qconfig:Qt Embedded(Linux和Windows CE)配置工具。
qtdemo:Qt的實例和示範項目的加载器。
qt3to4:協助移植Qt 3 程式到Qt 4 的工具。
qdbusxml2cpp:QtDBus XML compiler。将xml格式的D-Bus介面描述轉換成為C++原始碼
D-Bus Viewer:可以檢視D-Bus物件和信息的工具。
Qt Visual Studio Add-in:Visual Studio集成
Qt Eclipse Integration:Eclipse集成
Qt Solutions
Qt Solutions提供Qt額外的組件和工具,使Qt的開發更有效率。在Qt 4.5之後,Qt Solutions加入了LGPL的授權
平台和特定行業的組件和工具
整合Qt與特定第三方產品的組件和工具
尖端的元件和新的工具也會被直接加入在Qt框架中發布
使用
使用Qt的UI環境
視窗管理員
以下的視窗管理員,使用了Qt:
應用程式
一些出名的例子如下:
3DSlicer , a free open source software for visualization and medical image computing
AcetoneISO :映像檔掛載軟體
Adobe Photoshop Album , an image organizing application[ 38]
Arora :一款跨平台的開源網頁瀏覽器
Autodesk MotionBuilder :专业的3D角色动画软件
Autodesk Maya , 3D建模和動畫軟體
Autodesk 3ds Max
Avidemux , a Free Software program designed for multi-purpose video editing and processing
Avogadro :進階分子編輯器
BOUML ,a free uml toolbox
chmcreator :开源的chm开发工具
CineFX :一款跨平台、開源、免費、影片剪輯,特效與合成套裝
CoCoA , a software for computations in commutative algebra
Dash Express , an Internet-enabled personal navigation device
DAZ Studio , a 3D figure illustration/animation application
Doxygen :API文件產生器
EAGLE , tool for designing printed circuit boards (PCBs)
EiskaltDC++ , a program that uses the Direct Connect protocol.
Emergent :神經網路 模擬器。
FEKO , a software product for the simulation of electromagnetic fields
eva :Linux版QQ 聊天軟體。
FreeCAD , a free and open source 3D-Solid and general purpose design CAD/CAE
FreeMat :一個自由開源的數值計算環境和程式語言
Full Tilt Poker , one of the most popular online poker programs
Gadu-Gadu :即時通訊軟體
Gambas , A free development environment based on a Basic interpreter
GoldenDict :一款開源的字典軟體
Google地球 (Google Earth):三維虛擬地圖軟體。
GNS :Cisco网络模拟器。
Guitar Pro 6 , a tablature editor
刺蝟大作戰 :一個基於百戰天蟲的開源遊戲。
Hydrogen , an advanced drum machine
ImageVis3D , a volume ray-casting application
Ipe :自由的向量圖形編輯器
ISE Webpack , a freeware EDA tool for Windows and Linux developed by Xilinx
Kadu , a Polish instant messenger using the Gadu-Gadu protocol
KDELibs :一個許多KDE程式 都使用的共享庫 ,如Amarok 、K3b 、KDevelop 、KOffice 等。
KeePassX , a multi-platform port of KeePass, an open source password manager for Microsoft Windows
Last.fm播放器 :著名的網際網路音樂社群網站的桌面用戶端。
Launchy :一個開放源碼 的快捷啟動器
LMMS :一個開放源碼 的音樂編輯軟體
LyX :使用Qt作為界面的LaTeX 軟體。
Mathematica :Linux和Windows版本使用Qt作為GUI
Maxwell Render , a software package that aids in the production of photorealistic images from computer 3D model data
Mixxx :跨平台的開放源碼DJ混音軟體
MuseScore ,一個WYSIWYG 的樂譜編輯器
MythTV :開源的數位視訊錄製軟體。
Nuke , a node-based compositor
PDFedit :自由的PDF編輯器
PokerTH , an open source Texas hold 'em simulator
Psi :一款XMPP網路協定的即時通訊軟體
qBittorrent :自由的BitTorrent P2P客戶端
QCad :一個用於二維設計及繪圖的CAD軟體
Qjackctl , a tool for controlling the JACK Audio Connection Kit
QSvn , a GUI Subversion client for Linux, UNIX, Mac OS X and Windows
Opera :著名的網頁瀏覽器。
Qt Creator , the free software cross-platform integrated development environment from Nokia
Qterm :跨平台的BBS 軟體。
Quantum GIS :自由的桌面GIS
Quassel IRC :跨平台的IRC客戶端
QupZilla :跨平台的開放原始碼的Webkit 網頁瀏覽器。
RealFlow , a fluid and dynamics simulator for the 3D industry
Recoll :桌面搜尋工具
Rosegarden , a free software digital audio workstation program
SciDAVis , a cross-platform plotting and data analysis program
Scribus :桌面排版軟體。
Skype :一個使用人數眾多的基於P2P 的VOIP 聊天軟體。
SMPlayer :跨平台多媒體播放器
Spotify , music streaming service.
Stellarium :一款天文學的自由軟體
TeamSpeak :跨平台的音效通訊軟體
Texmaker :一款跨平台的開放源碼LaTeX編輯器
TeXworks , It is a graphical user interface to the typesetting system TeX.
Tlen.pl :波蘭人發明的即時通訊客戶端
TOra , a database administration tool[ 39]
UMPlayer :基於Mplayer的美觀多媒體播放器。
UniversalIndentGUI ,an application which helps the user to beautify, reformat or indent various kinds of code.
Valknut , a program that uses the Direct Connect protocol
VirtualBox :虛擬機器軟體。
VisIt :一個開源型互動式并行可視化與圖形分析工具,用於查看科學數據。
VisTrails , a scientific workflow management and visualization system
VLC多媒體播放器 :一個體積小巧、功能強大的開源媒體播放器。
VoxOx , a unified communications software.
WordPress , based on Qt for Maemo and Symbian
wpa supplicant , a free software implementation of an IEEE 802.11i
Xconfig :Linux的Kernel配置工具
YY语音 :又名“歪歪语音”,是一个可以进行在线多人语音聊天和语音会议的免费软件。在中国大陆拥有庞大的用户群。
咪咕音乐 :中国移动打造的正版音乐播放器[ 40]
WPS Office :金山公司(Kingsoft)出品的办公软件,与微软Office兼容性良好,个人版免费。
参见
書目
Summerfield, Mark, Advanced Qt Programming: Creating Great Software with C++ and Qt 4 1st, Addison-Wesley : 500, August 23, 2010 [2010-06-05 ] , ISBN 978-0321635907 , (原始内容存档 于2010-05-25)
Fitzek, Frank H. P.; Mikkonen, Tommi; Torp, Tony, Qt for Symbian 1st, Wiley : 160, May 17, 2010 [2010年1月30日] , ISBN 0470750103 , (原始内容 存档于2009年12月19日)
Blanchette, Jasmin; Summerfield, Mark, C++ GUI Programming with Qt 4 2nd, Prentice Hall : 752, February 14, 2008 [2010-01-30 ] , ISBN 978-0132354165 , (原始内容存档 于2010-12-03)
Summerfield, Mark, Rapid GUI Programming with Python and Qt 1st, Prentice Hall : 648, October 28, 2007 [2010-06-05 ] , ISBN 978-0132354189 , (原始内容存档 于2009-03-31)
Molkentin, Daniel, The Book of Qt 4: The Art of Building Qt Applications 1st, No Starch Press : 440, July 19, 2007 [2010-01-30 ] , ISBN 978-1593271473 , (原始内容存档 于2010-02-11)
Thelin, Johan, Foundations of Qt Development 1st, Apress : 528, August 3, 2007 [2010-01-30 ] , ISBN 978-1590598313 , (原始内容 存档于2010-01-02)
Dalheimer, Matthias, Programming with Qt 2nd, O'Reilly Media : 512, January 2002 [2010-01-30 ] , ISBN 978-0596000646 , (原始内容存档 于2010-02-05)
Ezust, Alan; Ezust, Paul, An Introduction to Design Patterns in C++ with Qt 4 1st, Prentice Hall : 656, September 10, 2006 [2010-01-30 ] , ISBN 978-0131879058 , (原始内容存档 于2008-04-22)
参考文献
外部連結