Qt中的C++技術

出版時間:2012-7  出版社:電子工業(yè)出版社  作者:張波  頁數:285  字數:444000  
Tag標簽:無  

內容概要

  《Qt中的C++技術》剖析了開源開發(fā)框架Qt中的C++技術,給讀者提供一個優(yōu)秀的案例,以學習C++語言以及面向對象設計技術。該書討論了以下內容:類模板特化技術;分析比較了C++標準庫、Qt對字符串、數據輸入/輸出的處理思路;隱式共享與d-pointer技術;函子及其在QTL(Qt
Template
Library)中的應用,QTL是如何使用模板特化技術優(yōu)化QList性能的;如何在C++程序中嵌入匯編代碼,實現一個原子操作,以很小的開銷實現線程間通信;信號與槽機制;Graphics/View框架等。
  軟件學院或者計算機學院的學生,可將《Qt中的C++技術》作為課程“C++程序設計”或者“面向對象軟件設計”的參考書;上述課程的教師,可將《Qt中的C++技術》的內容融入他們的主講或者試驗環(huán)節(jié),作為相關實訓課程的教材;軟件行業(yè)的開發(fā)者,可將《Qt中的C++技術》作為深入學習C++設計與編程技術的案例教材。
  

書籍目錄

第1章 案例的選擇與評估
1.1 案例的初步選擇
1.2 案例的定量評估
1.3 其他案例
1.4 基本約定
1.5 關于類圖的約定
第2章 qt概述
2.1 qt版權
2.2 qt庫的編譯
2.3 開發(fā)環(huán)境的設置
2.4 主控臺的輸入與輸出
2.5 qt風格的編程規(guī)范
2.6 與qt及c++相關的文獻資源
第3章 類模板特化
3.1 類模板特化
3.2 traits技術
3.3 類型分類(type classification)技術
3.4 降低代碼膨脹
第4章 標準庫及qt對字符串的處理
.4.1 字符及其編碼
4.2 標準庫的類模板basic_string
4.3 qt的類qstring
第5章 國際化與區(qū)域文化
5.1 區(qū)域文化
5.2 facet
5.3 類locale的實現
5.4 類模板facet的實現
5.5 派生新的facet類
第6章 c++的iostream
6.1 c語言的scanf/printf函數組
6.2 iostream的總體結構
6.3 字符特征的描述
6.4 模板特化后的總體結構
6.5 文件流
6.6 字符串流
6.7 流緩沖區(qū)
6.8 二進制文件的處理
6.9 用戶自定義類型的輸入和輸出
第7章 qt的流
7.1 文件系統(tǒng)及底層文件操作
7.2 類qtextstream
7.3 類qdatastream
7.4 類qlocale
7.5 iostream和qt流類的比較
第8章 隱式共享與d-pointer技術
8.1 隱式共享
8.2 d-pointer在隱式共享中的應用
8.3 二進制代碼兼容
8.4 d-pointer模式的實現
8.5 qobject中的d-pointer
第9章 qt容器與迭代器
9.1 qtl概述
9.2 qtl容器和qdatastream的無縫連接
9.3 類型分類技術在qlist中的應用
9.4 函子的應用——相關詞詞典
第10章 多線程與可重入
10.1 創(chuàng)建一個線程
10.2 線程間同步
10.3 線程安全與可重入
10.4 多線程環(huán)境下的singleton模式
第11章 信號與槽(signals and slots)
11.1 對象樹(qobject tree)
11.2 信號與槽機制
11.3 信號與槽的應用例子
第12章 graphics/view框架
12.1 qt圖形系統(tǒng)介紹
12.2 graphics/view框架
12.3 例子——相撞的老鼠
第13章 model/view框架
13.1 model/view框架總體架構
13.2 模型(models)
13.3 視圖(views)
13.4 選擇操作
13.5 委托(delegates)
13.6 代理模型(proxy models)
13.7 便利視圖類
第14章 qt中的命令模式
14.1 qt的undo framework
14.2 使用undo framework的一個例子
第15章 qt中的抽象工廠模式
15.1 抽象工廠模式簡介
15.2 qtextcodec及其子類的定義
15.3 界面風格
第16章 qt中的觀察者模式
16.1 事件處理機制
16.2 事件濾波器
16.3 一個簡單的例子——圖像瀏覽器
16.4 一個有趣的例子——鼠標手勢
第17章 qt的元對象系統(tǒng)
17.1 c++ rtti (run-time type information)
17.2 qt的元對象系統(tǒng)
第18章 智能指針
18.1 qpointer
18.2 qshareddatapointer
參考文獻
索引
代碼目錄
第1章 案例的選擇與評估
第2章 qt概述
代碼段2 1,使用qt進行主控臺輸入與輸出,取自z:\examples\qt_console\main.cpp
第3章 類模板特化
代碼段3 1,類模板stack,引自z:\examples\template_specialization
代碼段3 2,完全特化的類模板stack,引自examples\template_specialization
代碼段3 3,部分特化的類模板stack,引自examples\template_specialization
代碼段3
4,使用traits技術封裝float及double類型的特征,取自z:\examples\float_traits\main.cpp
代碼段3 5,類型分類技術,取自z:\examples\type_classification\main.cpp
代碼段3 6,應用類模板特化降低代碼膨脹,摘自examples\reduce_code_bloat
代碼段3 7,應用類模板特化降低代碼膨脹,摘自z:\examples\reduce_code_bloat
第4章 標準庫及qt對字符串的處理
代碼段4 1,類模板basic_string的構造函數
代碼段4
2,類模板basic_string常用構造函數的使用,取自z:\examples\basic_string_demo\main.cpp
代碼段4 3,basic_string對象和字符串的比較
代碼段4 4,字符串的不同存放方式,摘自z:\examples\qstring_demo\main.cpp
代碼段4 5,qstring的字符編碼轉換功能,摘自z:\examples\qstring_merit\main.cpp
第5章 國際化與區(qū)域文化
代碼段5
1,類模板time_get的使用方法,取自z:\examples\locale_time_get\main.cpp
代碼段5 2,類模板time_put的成員函數put的用法,取自z:\examples\locale_time_
put\main.cpp
代碼段5 3,類模板codecvt的成員函數in的功能,取自z:\examples\locale_codecvt\
main.cpp
代碼段5 4,類locale以及facet的實現框架,取自vs 2010安裝目錄crt\src\xlocale
代碼段5 5,類locale::id的作用
代碼段5 6,創(chuàng)建新的facet子類,取自z:\examples\locale_unit\main.cpp
第6章 c++的iostream
代碼段6
1,應用類模板char_traits實現大小寫不敏感的字符串類ci_string,取自z:\examples\ci_string\ci_string\main.cpp
代碼段6 2,對文件流進行讀取以及寫入操作,取自z:\examples\
fstream_demo\main.cpp
代碼段6 3,具有多種格式設置的流,取自z:\examples\share_streambuf
代碼段6 4,流緩沖區(qū)的復制,z:\examples\copy_streambuf\main.cpp
代碼段6 5,二進制文件的讀取,摘自z:\examples\process_binary\main.cpp
代碼段6 6,直接操作二進制文件對應的流緩沖區(qū),摘自z:\examples\
process_binary\main.cpp
代碼段6 7,用戶自定義類型的輸入和輸出,摘自z:\examples\
overloaded_io\main.cpp
第7章 qt的流
代碼段7
1,使用qfileinfo以及qdir獲取各驅動器下的子目錄名,取自z:\examples\qdir_demo\main.cpp
代碼段7 2,使用qfile操作一個文件,取自z:\examples\qfile_read\main.cpp
代碼段7 3,使用qtextcodec轉換編碼方案,摘自z:\examples\
qtextstream_demo\main.cpp
代碼段7 4,使用qdatastream輸出二進制數據,摘自z:\examples\
qdatastream_usage\main.cpp
代碼段7 5,使用qdatastream讀取二進制數據,摘自z:\examples\
qdatastream_usage\main.cpp
代碼段7
6,重載運算符以使qdatastream支持新的數據類型,取自z:\examples\qdatastream_demo\main.cpp
代碼段7 7,qlocale的使用,摘自z:\examples\qlocale_set\main.cpp
第8章 隱式共享與d-pointer技術
代碼段8 1,采用隱式共享技術的qstring::tocasefolded( ),取自src\
corelib\tools\qstring.cpp
代碼段8 2,qstring的復制構造函數,摘自src\corelib\tools\qstring.h
代碼段8 3,類matrix的傳統(tǒng)定義方式,摘自z:\examples\d_pointer\matrix\main.cpp
代碼段8
4,應用d-pointer模式的類matrix,摘自z:\examples\d_pointer\matrix_with_d_pointer\main.cpp
代碼段8 5,qt 4.5版本中類qlocale的定義,摘自s:\corelib\tools\qlocale.h
代碼段8 6,qt 4.5版本中類qlocaleprivate的定義,摘自
s:\corelib\tools\qlocale_p.h
代碼段8 7,修改成員函數tostring()加入qt庫的版本信息,摘自
s:\corelib\tools\qlocale.cpp
代碼段8 8,使用類qlocale的qt應用程序,摘自z:\examples\d_
pointer\test_qlocale\main.cpp
代碼段8 9,實現d-pointer模式的一個例子
代碼段8 10,qt中與d-pointer模式相關的宏,摘自src\corelib\global\qglobal.h
代碼段8 11,宏q_declare_private展開后的結果
代碼段8 12,qobject及qobjectdata的定義,摘自s:\corelib\kernel\qobject.h
代碼段8 13,類qobject及qobjectprivate對d-pointer的使用
代碼段8 14,qwidget繼承了qobject的d-pointer模式
第9章 qt容器與迭代器
代碼段9 1,stl風格以及java風格的迭代器,摘自z:\examples\
qlist_change_value\main.cpp
代碼段9 2,foreach的使用格式,取自z:\examples\foreach_demo\main.cpp
代碼段9 3,類模板qless,摘自src\corelib\tools\qalgorithms.h
代碼段9 4,使用qdatastream保存/讀取qmap對象,摘自
z:\examples\english_pron\main.cpp
代碼段9
5,qlistdata的成員函數remove(),摘自src\corelib\tools\qlistdata.cpp
代碼段9 6,qtypeinfo的定義,摘自src\corelib\global\qglobal.h
代碼段9 7,qlist的數據結構,摘自src\corelib\tools\qlist.h
代碼段9 8,向qlist中添加元素,摘自src\corelib\tools\qlist.h
代碼段9 9,使用qsort對容器排序,摘自z:\examples\qtl_related_words\main.cpp
代碼段9
10,函子indirectcompare,摘自z:\examples\qtl_thesaurus\main.cpp
第10章 多線程與可重入
代碼段10 1,在qt中創(chuàng)建多線程,摘自z:\examples\simple_thread\main.cpp
代碼段10 2,互斥體qmutex的使用,取自z:\examples\qmutex\main.cpp
代碼段10 3,使用互斥體的一個簡單方法
代碼段10 4,用信號量來管理循環(huán)緩沖區(qū),摘自z:\examples\qsemaphore\main.cpp
代碼段10 5,使用條件量管理循環(huán)緩沖區(qū),摘自z:\examples\qwaitcondition\main.cpp
代碼段10 6,以傳統(tǒng)方式實現singleton模式
代碼段10 7,在堆中創(chuàng)建全局對象
代碼段10 8,簡化的成員函數instance()
代碼段10 9,通過靜態(tài)局部對象來定義singleton對象
代碼段10 10,靜態(tài)局部對象的初始化
代碼段10 11,c++的判斷/賦值操作無法鎖定共享資源
代碼段10 12,qbasicatomicpointer
的定義,摘自s:\corelib\thread\qbasicatomic.h
代碼段10 13,qbasicatomicpointer
在windows/intel平臺上的實現,摘自s:\corelib\arch\qatomic_windows.h
代碼段10 14,類模板qglobalstatic的定義,摘自s:\corelib\global\qglobal.h
代碼段10
15,類模板qglobalstaticdeleter的定義,摘自s:\corelib\global\qglobal.h
代碼段10 16,宏q_global_static的定義,摘自s:\corelib\global\qglobal.h
代碼段10 17,單線程環(huán)境下宏q_global_static的定義,取自
s:\corelib\global\qglobal.h
代碼段10 18,直接返回一個指向singleton對象的指針
代碼段10
19,使用一個已經析構的singleton對象,摘自z:\examples\use_destructed_singleton\main.cpp
第11章 信號與槽(signals and slots)
代碼段11 1,qobject對象的定義順序,摘自z:\examples\
qobject_destruction_order\main.cpp
代碼段11 2,信號與槽的定義,摘自z:\examples\signals_slots_
demo\signals_slots_declare.h
代碼段11 3,信號與槽的綁定,摘自z:\examples\signals_slots_demo\main.cpp
代碼段11 4,類finddialog的定義,摘自
z:\examples\find_dialog\find_dialog.h
代碼段11 5,類finddialog的構造函數,取自
z:\examples\find_dialog\find_dialog.cpp
代碼段11 6,類finddialog的構造函數(續(xù)),摘自
z:\examples\find_dialog\find_dialog.cpp
代碼段11 7,類finddialog的槽函數及析構函數,摘自
z:\examples\find_dialog\find_dialog.cpp
第12章 graphics/view框架
代碼段12 1,類mouse的定義,取自z:\examples\collidingmice\mouse.h
代碼段12 2,類mouse的部分成員函數,取自z:\examples\collidingmice\mouse.cpp
代碼段12 3,類mouse的成員函數advance(),取自
z:\examples\collidingmice\mouse.cpp
代碼段12 4,項目collidingmice的主函數,取自
z:\examples\collidingmice\main.cpp
第13章 model/view框架
代碼段13
1,類treemodel的聲明,取自z:\examples\mvc\binary_tree\treemodel.h
代碼段13
2,類treemodel的實現,取自z:\examples\mvc\binary_tree\treemodel.cpp
代碼段13 3,類treemodel的實現(續(xù)),取自
z:\examples\mvc\binary_tree\treemodel.cpp
代碼段13 4,滿二叉樹例子的主函數,取自z:\examples\mvc\binary_tree\main.cpp
代碼段13 5,能夠處理更多角色的模型類,取自
z:\examples\mvc\binary_tree_more_role\treemodel.cpp
代碼段13 6,顯示自身發(fā)生變化的數據項,取自
z:\examples\mvc\binary_tree_changing_data\treemodel.cpp
代碼段13 7,更改數據集的標頭,取自z:\examples\mvc\
binary_tree_header\treemodel.cpp
代碼段13 8,編輯滿二叉樹的葉節(jié)點,取自z:\examples\mvc\binary_
tree_editable\treemodel.cpp
代碼段13
9,重載qabstractlistmodel的虛函數以顯示、編輯一個列表,取自z:\examples\mvc\qabstractlistmodel_demo\listmodel.cpp
代碼段13
10,使用qstandarditemmodel處理列表,取自z:\examples\mvc\qstandarditemmodel_demo\main.cpp
代碼段13
11,使用qstandarditemmodel處理表格,取自z:\examples\mvc\qstandarditemmodel_demo\main.cpp
代碼段13
12,使用qstandarditemmodel處理樹,取自z:\examples\mvc\qstandarditemmodel_demo\main.cpp
代碼段13
13,類qstringlistmodel的使用,取自z:\examples\mvc\qstringlistmodel_demo\main.cpp
代碼段13
14,便利模型類qfilesystemmodel的用法,取自z:\examples\mvc\file_system\main.cpp
代碼段13
15,用qcolumnview對象顯示本地文件系統(tǒng),取自z:\examples\mvc\qcolumnview_demo\main.cpp
代碼段13
16,類mainwindow的聲明,取自z:\examples\mvc\selection_monitoring\mainwindow.h
代碼段13
17,類mainwindow實現,取自z:\examples\mvc\selection_monitoring\mainwindow.cpp
代碼段13
18,同步兩個視圖對象中的選擇信息,取自z:\examples\mvc\sync_selection\main.cpp。
代碼段13 19,例子spinbox的主函數,取自z:\examples\mvc\
spinboxdelegate\main.cpp
代碼段13 20,類spinboxdelegate的實現,取自z:\examples\mvc\
spinboxdelegate\delegate.cpp
代碼段13
21,代理模型索引的創(chuàng)建,取自z:\examples\mvc\revertproxymodel\revertproxymodel.cpp
代碼段13
22,代理模型revertproxymodel的其他2個接口函數,取自z:\examples\mvc\revertproxymodel\revertproxymodel.h
代碼段13
23,代理模型revertproxymodel的接口函數parent(),取自z:\examples\mvc\revertproxymodel\revertproxymodel.cpp
代碼段13 24,接口函數data( )的實現,取自q:\src\gui\itemviews\
qabstractproxymodel.cpp
代碼段13
25,創(chuàng)建源模型,取自z:\examples\mvc\basicsortfiltermodel\main.cpp
代碼段13 26,類window的構造函數,取自z:\examples\mvc\
basicsortfiltermodel\window.cpp
代碼段13 27,令代理模型指向源模型,取自z:\examples\mvc\
basicsortfiltermodel\window.cpp
代碼段13
28,代理模型對源模型數據項的過濾、排序,取自z:\examples\mvc\basicsortfiltermodel\window.cpp
代碼段13
29,向qlistwidget中添加數據項,取自z:\examples\mvc\qlistwidget_demo\main.cpp
代碼段13 30,新聞的表示,z:\examples\mvc\item_roles\newsdialog.cpp
代碼段13
31,設置qlistwidgetitem所表示數據項中的數據子項,取自z:\examples\mvc\item_roles\newsdialog.cpp
代碼段13 32,gdp數據的表示,取自z:\examples\mvc\
qtablewidget_demo\main.cpp
代碼段13 33,類qtablewidget的使用,取自z:\examples\mvc\
qtablewidget_demo\main.cpp
代碼段13 34,書籍目錄的表示,取自z:\examples\mvc\
qtreewidget_demo\main.cpp
代碼段13
35,構建qtreewidget中的樹狀模型,取自z:\examples\mvc\qtreewidget_demo\main.cpp
第14章 qt中的命令模式
代碼段14 1,qundocommand的部分定義
代碼段14 2,類qundocommand部分成員函數的實現,摘自
s:\gui\util\qundostack.cpp
代碼段14 3,qundostack基本功能部分的定義,取自s:\gui\util\qundostack.h
代碼段14 4,qundostackprivate的部分定義,取自s:\gui\util\qundostack_p.h
代碼段14 5,類movecommand的定義,取自
z:\examples\undoframework\commands.h
代碼段14 6,類movecommand的實現,取自
z:\examples\undoframework\commands.cpp
第15章 qt中的抽象工廠模式
代碼段15 1,依據全局變量創(chuàng)建不同風格的界面元素
代碼段15 2,抽象工廠模式的使用
代碼段15
3,latin1到unicode的轉換,取自z:\examples\factory_pattern\main.cpp
代碼段15 4,類qtextcodec的部分定義,取自s:\corelib\codecs\qtextcodec.h
代碼段15 5,qtextcodec部分成員函數的實現,取自
s:\corelib\codecs\qtextcodec.cpp
代碼段15 6,類qlatin1codec的定義與實現
代碼段15
7,類widgetgallery的成員函數changestyle(),取自z:\examples\styles\widgetgallery.cpp
代碼段15 8,圓角矩形繪制路徑的繪制,取自z:\examples\
styles\norwegianwoodstyle.cpp
代碼段15 9,基本元素的繪制,取自z:\examples\styles\norwegianwoodstyle.cpp
代碼段15 10,基本元素的繪制(續(xù)),取自z:\examples\styles\
norwegianwoodstyle.cpp
代碼段15
11,norwegianwoodstyle的成員函數drawcontrol,取自z:\examples\styles\norwegianwoodstyle.cpp
代碼段15 12,更改控件屬性的成員函數polish,取自z:\examples\
styles\norwegianwoodstyle.cpp
代碼段15
13,更改控件尺寸的成員函數pixelmetric,取自z:\examples\styles\norwegianwoodstyle.cpp
代碼段15 14,設置與風格相關的一些屬性,取自z:\examples\
styles\norwegianwoodstyle.cpp
代碼段15
15,更改應用程序調色板的成員函數polish,取自z:\examples\styles\norwegianwoodstyle.cpp
代碼段15
16,設置填充圖像的私有成員函數settexture,取自z:\examples\styles\norwegianwoodstyle.cpp
第16章 qt中的觀察者模式
代碼段16 1,設置qscrollarea為另一控件的觀察者,取自
q:\src\gui\widgets\qscrollarea.cpp
代碼段16 2,將一個qscrollarea對象設置為一個qlabel對象的觀察者,取自
z:\examples\imageviewer\imageviewer.cpp
代碼段16 3,類imageviewer中更改圖像顯示比例的函數,取自
z:\examples\imageviewer\imageviewer.cpp
代碼段16 4,鼠標手勢及其回調函數的定義,取自
z:\examples\mouse_guesture\mousegesturerecognizer.h
代碼段16 5,類mousegesturerecognizer的定義,取自
z:\examples\mouse_guesture\mousegesturerecognizer.h
代碼段16 6,對鼠標軌跡進行識別的核心算法,取自
z:\examples\mouse_guesture\mousegesturerecognizer.cpp
代碼段16 7,類mousegesture的定義,取自z:\examples\mouse_
guesture\mousegesture.h
代碼段16 8,類gesturecallbacktosignal 的定義,取自
z:\examples\mouse_guesture\mousegesturefilter.cpp
代碼段16 9,類mousegesturefilter的定義
代碼段16
10,鼠標手勢的添加與刪除,取自z:\examples\mouse_guesture\mousegesturefilter.cpp
代碼段16
11,事件濾波器及相關函數,取自z:\examples\mouse_guesture\mousegesturefilter.cpp
代碼段16 12,類mainwindow的定義,取自z:\examples\mouse_
guesture\mainwindow.h
代碼段16 13,鼠標手勢例子的主函數,取自z:\examples\mouse_guesture\main.cpp
第17章 qt的元對象系統(tǒng)
代碼段17 1,類type_info的聲明
代碼段17
2,typeid的操作數可以為基本類型、非多態(tài)類及多態(tài)類,取自z:\examples\typeid\main.cpp
代碼段17
3,判斷一個qobject派生類的對象是否“具有”某個類型,取自z:\examples\qmetaobject_demo\main.cpp
代碼段17
4,獲取qobject派生類對象的類型信息,取自z:\examples\qmetaobject_demo1\main.cpp
代碼段17 5,獲取qobject派生類對象的數據,取自z:\examples\introspect_
qobject\main.cpp
代碼段17 6,qvariant的使用,取自z:\examples\qvariant\main.cpp
代碼段17 7,qvariant支持二進制輸入/輸出,摘自z:\examples\qvariant\main.cpp
第18章 智能指針
代碼段18 1,qpointer的功能,取自z:\examples\qpointer_demo\main.cpp
代碼段18 2,對一個對象施加delete運算符,取自z:\examples\delete_
object\main.cpp
代碼段18 3,具有淡入顯示效果的類faderwidget
代碼段18 4,使用qpointer來判斷一個qfaderwidget控件是否存在
代碼段18 5,qwidget對qpointer的使用,取自s:\gui\kernel\qwidget.cpp
代碼段18
6,遍歷qmultihash中具有相同關鍵字的元素,取自z:\examples\qmultihash_demo\main.cpp
代碼段18 7,使用信號量qreadwritelock鎖定某個資源以進行寫入操作
代碼段18 8,使用信號量qwritelock鎖定某個資源以進行寫入操作
代碼段18 9,與qpointer相關的類型與函數,取自s:\corelib\kernel\qobject.cpp
代碼段18 10,qpointer的定義,摘自s:\corelib\kernel\qpointer.h
代碼段18 11,qmetaobject中的相關代碼,取自s:\corelib\kernel\qobject.cpp
代碼段18 12,qobject析構函數中與qpointer相關的代碼,摘自
s:\corelib\kernel\qobject.cpp
代碼段18 13,使用類模板qshareddatapointer
實現隱式共享,取自z:\examples\qsharedatapointer_demo\main.cpp
代碼段18 14,關于常量型成員函數的約定,取自z:\examples\select_
const\main.cpp
代碼段18 15,類qshareddata
的定義,取自q:\src\corelib\tools\qshareddata.h
代碼段18 16,類模板qshareddatapointer的定義(待續(xù)),取自
q:\src\corelib\tools\qshareddata.h
代碼段18 17,類模板qshareddatapointer的定義(待續(xù)),取自
q:\src\corelib\tools\qshareddata.h
代碼段18 18,類模板qshareddatapointer的定義(續(xù)),取自
q:\src\corelib\tools\qshareddata.h
參考文獻
索引

章節(jié)摘錄

  Qt概述  Qt(發(fā)單詞“Cute”的音)是一個跨平臺的C++開發(fā)框架,它包含一個功能豐富的C++類庫以及一套簡便易用的集成開發(fā)工具。Qt所支持的平臺不但包括Linux,Windows以及MacOSX等主流桌面操作系統(tǒng),還包括諸如Symbian,Maemo以及MeeGo這樣的嵌入式操作系。使用Qt編寫的C++程序具有良好的跨平臺特性,程序員幾乎無須更改源代碼,所編寫的應用程序即可運行在各種操作系統(tǒng)中,這能大幅度縮短開發(fā)周期、降低開發(fā)成本。Qt的C++類庫是完全面向對象的,經過精心的設計,該類庫不但功能強大,而且方便易用。這些優(yōu)點使得Qt被Adobe,Boeing,Google,IBM,Motorola,NASA,Skype等大型機構以及眾多的中小公司采用。  1.Qt的歷史  回顧Qt二十余年的發(fā)展歷史,我們可以學習是哪些因素促成了Qt的成功。Qt的創(chuàng)始人是HaavardNord和EirikChambe-Eng,二人后來分別成為'Trolltech公司的首席執(zhí)行官和總裁。1988年,受一個瑞典公司的委托Haavard開始開發(fā)一個C++圖形庫。1990年夏季,二人共同開發(fā)一個處理超聲波圖像的數據庫系統(tǒng)時,需要一個能夠運行在UNIX,Macintosh以及Windows上的跨平臺C++圖形庫。一天,兩人在公園長椅上享受陽光浴時,Haavard說:“我們需要一個面向對象的圖形顯示系統(tǒng)”,之后的討論促成了Qt的誕生。這是Qt成功的首要因素:源于實際需求?! ?991年-1993年,二人設計并實現了Qt庫的圖形核心庫,一組控件以及“信號與槽”機制。1994年,二人創(chuàng)建了后來的Trolltech公司,并與1995年5月公開發(fā)布了Qt0.90版。自發(fā)布之日起,Qt就提供了商業(yè)授權和開源軟件授權兩種方式。發(fā)布之后的10個月中,沒有任何人購買Qt的商業(yè)授權。直到1996年3月,歐洲航天局終于購買了Qt的10份商業(yè)授權,Qt才得以逐步壯大。從這一階段的歷史,我們可以看出Qt成功的另外兩個因素:開發(fā)團隊精良的技術(比如提出并實現了“信號與槽”機制);歐洲人對知識產權的尊重(Qt創(chuàng)始人能夠放心地發(fā)布Qt的源代碼,而歐洲航天局在能夠看到Qt所有源代碼的條件下仍然購買Qt的商業(yè)授權)?! ?997年,KDE項目的組織者MatthiasEttrich決定使用Qt構建KDE,使Qt實際成為Linux上開發(fā)C++圖形程序的標準庫。2001年,Qt3.0發(fā)布,它的源代碼已經超過50萬行。2005年,Qt4.0發(fā)布,包含500多個類,9000個函數。2008年,Nokia收購了Trolltech公司,將Qt作為該公司移動設備的主要開發(fā)平臺?!  ?/pre>

編輯推薦

  《Qt中的C++技術》共18章。第1章講述為什么會從眾多的開源C++項目中選擇Qt。讀者可以借鑒其中的方法選擇其他C++案例,或者在學習其他編程語言時,使用其中的方法選擇對應的案例。而且,讀者還可以使用其中的工具CppDepend剖析其他軟件的結構與質量。這一章還介紹了本書對術語、UML類圖方面的約定。在閱讀后續(xù)章節(jié)前,讀者應該首先閱讀這一章。本書不但剖析Qt的源代碼,有的章節(jié)還涉及修改Qt的源代碼,此時需要重新編譯整個Qt庫。第2章簡要介紹Qt,并講述如何在Visual Studio 2010開發(fā)環(huán)境下安裝、編譯Qt庫。Qt庫多處用到了類模板特化技術??紤]到一般的C++教科書不會詳細講解這個話題,故第3章闡述該技術的概念和基本應用,第6章及第9章用到了該技術。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    Qt中的C++技術 PDF格式下載


用戶評論 (總計10條)

 
 

  •   有助于理解和掌握在QT中應用C++技術的人員學習,是一本值得認真學習的書。
  •   光盤還沒看,書本身還不錯,視角比較獨特,讓人眼界大開
  •   內容不錯,還 沒看 完!
  •   不錯。感覺講的內容還不夠多。再多點就好了
  •   內容沒有細致看。反正主要是想加強下C++的。希望不錯。
  •   很好的一本書&;hellip;沒什么不足
  •   其實是介紹C++的書,結合Qt中的應用進行介紹。講解角度有點不同。還算有點幫助吧。
  •   本書不適合用QT初學者,不是講授如何使用Qt編程的人。而是針對熟悉C++特性,希望掌握Qt內幕的人員??吹贸?,作者花費了很大的心思。
  •   還行,沒啥有獨到的見解,每個主題都還有意思,但不太深入。
  •   感覺 不是很好??赡墁F在也很難找到很好的書吧?
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7