編輯推薦
全新,基於 Qt 5.3 編寫,全麵涉及 Qt Quick;
經典,植根於 Qt 網絡博客教程,可無限更新;
基礎,對每個知識點詳盡講解,並設計瞭示例程序;
係統,與《Qt Creator 快速入門(第2版)》相輔相成。
內容簡介
《Qt 5編程入門》是基於Qt 5的QML和Qt Quick入門書籍,詳細介紹瞭QML語言的語法和編寫Qt Quick程序需要用到的基本知識點。《Qt 5編程入門》內容主要包括Qt 5的介紹、QML語法、Qt Quick基礎知識以及在圖形動畫、數據處理和多媒體方麵的應用等。
《Qt 5編程入門》側重講解Qt 5中QML和Qt Quick的內容,適閤希望學習QML編程以及希望使用Qt開發移動應用的讀者。對於沒有任何Qt基礎或者想學習Qt C++編程的讀者,可以參考《Qt Creator快速入門(第2版)》一書。
《Qt 5編程入門》內容源於作者的網絡博客,作者會在網上及時解答讀者疑問、更新修改內容、發布相關教程和配套資料,敬請讀者關注Qter開源社區(www.qter.org)的相關內容。
作者簡介
霍亞飛,網名yafeilinux,嵌入式軟件工程師,熱愛編程,熱愛開源!在博客中發錶瞭大量Qt、Linux教程和開源軟件,被眾多網友奉為經典!參與創建瞭www.yafeilinux.com和Qt愛好者社區(www.qter.org),進行Qt及開源項目的推廣和普及! 程梁,網名devbean,軟件研發工程師,關注IT技術的創新和改革,專注於Qt技術開發教程的編寫。
建立devbean.net博客,創作大量有創意、實踐性強的技術開發文章,與廣大網友分享、互動,
在網絡上廣受好評。緻力於帶領廣大Qt愛好者步入Qt的精彩世界,與更多朋友分享成功的樂趣。
目錄
第1章Qt 5簡介1
1.1Qt 5架構1
1.1.1模塊架構1
1.1.2圖形界麵庫的架構5
1.1.3Qt 5架構主要特點6
1.2Qt 5的特點6
1.2.1Qt 5新增的主要功能6
1.2.2Qt 5與Qt 4的兼容性11
1.2.3C++還是QML12
1.2.4Qt 5源代碼文件的編碼12
1.2.5移動平颱開發13
1.3小結13
第2章將Qt 4代碼遷移到Qt 514
2.1Qt 5版本的HelloWorld14
2.1.1Qt 5的下載與安裝14
2.1.2創建Hello World程序15
2.1.3Qt 4程序遷移到Qt 5的注意事項17
2.2Qt 4程序遷移實例19
2.2.1修改編碼19
2.2.2修改代碼20
2.2.3設置應用程序圖標21
2.2.4發布程序22
2.3新的信號槽語法22
2.3.1新舊語法對比22
2.3.2新的語法示例23
2.4對C++11的支持26
2.4.1Lambda錶達式26
2.4.2適用於C++11的宏28
2.5全新的插件係統29
2.6小結32
第3章Qt Quick的世界33
3.1全新的QML和Qt Quick33
3.2Qt Quick項目36
3.2.1Qt Quick UI項目36
3.2.2Qt Quick Application項目39
3.2.3運行示例程序42
3.2.4Qt Quick程序的發布42
3.3將QML程序遷移到Qt 542
3.3.1Qt 5中QML和Qt Quick的更改43
3.3.2QML 程序移植示例46
3.4小結48
第4章QML語法49
4.1QML語法基礎49
4.2import導入語句51
4.2.1模塊(命名空間)導入語句52
4.2.2目錄導入語句53
4.2.3JavaScript資源導入語句55
4.3QML類型係統55
4.3.1基本類型55
4.3.2JavaScript類型57
4.3.3對象類型57
4.4對象特性(Attributes)57
4.4.1id特性58
4.4.2屬性特性58
4.4.3信號和信號處理器特性65
4.4.4方法特性69
4.4.5附加屬性和附加信號處理器70
4.5集成JavaScript72
4.5.1JavaScript錶達式72
4.5.2從JavaScript動態創建QML對象77
4.5.3在QML中定義JavaScript資源81
4.5.4在QML中導入JavaScript資源83
4.5.5JavaScript宿主環境85
4.6QML文檔86
4.6.1通過QML文檔定義對象類型87
4.6.2QML組件89
4.6.3作用域和命名解析90
4.6.4資源加載和網絡透明性95
4.6.5QML的國際化97
4.6.6QML的編碼約定100
4.7QML模塊103
4.7.1定義一個QML模塊103
4.7.2支持的QML模塊類型104
4.8小結104
第5章Qt Quick基礎105
5.1基礎可視項目105
5.1.1Item105
5.1.2Rectangle109
5.1.3Text110
5.1.4TextInput117
5.1.5TextEdit120
5.2布局管理121
5.2.1定位器(Positioners)121
5.2.2基於錨(anchors)的布局126
5.2.3Layouts129
5.3事件處理133
5.3.1MouseArea133
5.3.2鼠標事件(MouseEvent)和滾輪事件(WheelEvent)135
5.3.3拖放事件(DragEvent)136
5.3.4鍵盤事件(KeyEvent)和焦點作用域(FocusScope)140
5.3.5定時器(Timer)145
5.4使用Loader動態加載組件145
5.4.1Loader的大小與行為146
5.4.2從加載的項目中接收信號147
5.4.3焦點和鍵盤事件147
5.5小結148
第6章Qt Quick控件和對話框149
6.1構建第一個示例149
6.2ApplicationWindow應用程序窗口150
6.3Window154
6.4按鈕類控件155
6.4.1ExclusiveGroup156
6.4.2Button157
6.4.3CheckBox157
6.4.4RadioButton158
6.4.5Switch158
6.5數據選擇類控件159
6.5.1ComboBox159
6.5.2Slider160
6.5.3SpinBox161
6.6文本類控件161
6.6.1TextField161
6.6.2TextArea162
6.7其他控件163
6.7.1Label163
6.7.2GroupBox163
6.7.3BusyIndicator164
6.7.4ProgressBar164
6.8導航類視圖165
6.8.1ScrollView165
6.8.2SplitView165
6.8.3StackView166
6.8.4TabView170
6.8.5TableView171
6.9標準對話框172
6.9.1ColorDialog173
6.9.2FileDialog173
6.9.3FontDialog174
6.9.4MessageDialog175
6.10定義控件樣式176
6.11小結177
第7章圖形動畫基礎178
7.1顔色、漸變和調色闆178
7.1.1顔色(color)178
7.1.2漸變(Gradient)181
7.1.3係統調色闆(SystemPalette)181
7.2圖片、邊界圖片和動態圖片182
7.2.1圖片(Image)182
7.2.2邊界圖片(BorderImage)184
7.2.3動態圖片(AnimatedImage)185
7.3縮放、鏇轉和平移變換186
7.3.1使用屬性實現簡單變換186
7.3.2使用Transform實現高級變換188
7.4狀態(State)189
7.4.1創建狀態190
7.4.2默認狀態和when屬性191
7.5動畫和過渡192
7.5.1觸發動畫193
7.5.2控製動畫的執行198
7.5.3精靈動畫(Sprite Animations)199
7.5.4共享動畫實例203
7.6Flickable和Flipable204
7.6.1彈動效果(Flickable)204
7.6.2翻轉效果(Flipable)206
7.7小結207
第8章圖形效果208
8.1混閤效果(Blend)209
8.2顔色效果(Color)211
8.3漸變效果(Gradient)214
8.3.1錐形漸變(ConicalGradient)214
8.3.2綫性漸變(LinearGradient)
215
8.3.3輻射漸變(RadialGradient)215
8.4變形效果(Distortion)216
8.5陰影效果(Drop Shadow)217
8.5.1投影(DropShadow)217
8.5.2內陰影(InnerShadow)218
8.6模糊效果(Blur)219
8.6.1快速模糊(FastBlur)219
8.6.2高斯模糊(GaussianBlur)220
8.6.3遞歸模糊(RecursiveBlur)220
8.6.4遮罩模糊(MaskedBlur)221
8.7動感模糊效果(Motion Blur)222
8.7.1方嚮模糊(DirectionalBlur)222
8.7.2徑嚮模糊(RadialBlur)223
8.7.3縮放模糊(ZoomBlur)224
8.8發光效果(Glow)225
8.8.1發光(Glow)225
8.8.2矩形發光(RectangularGlow)226
8.9遮罩效果(Mask)227
8.9.1不透明遮罩(OpacityMask)227
8.9.2閥值遮罩(ThresholdMask)228
8.10小結229
第9章粒子係統230
9.1ParticleSystem230
9.2發射器(Emitter)232
9.3渲染器(ParticlePainters)233
9.4TrailEmitter236
9.5粒子組237
9.6隨機參數239
9.7影響器(Affector)240
9.8小結245
第10章Canvas基礎246
10.1Canvas的使用246
10.2繪製操作248
10.2.1繪製參數設置248
10.2.2繪製矩形250
10.2.3狀態的保存與恢復251
10.2.4繪製文本252
10.2.5繪製路徑254
10.3漸變填充259
10.3.1綫性漸變259
10.3.2輻射漸變260
10.3.3錐形漸變261
10.4陰影261
10.5使用圖像262
10.6坐標變換264
10.6.1平移264
10.6.2縮放265
10.6.3鏇轉266
10.6.4扭麯267
10.6.5transform()函數總結267
10.7小結268
第11章模型和視圖269
11.1模型/視圖架構簡介269
11.2數據模型271
11.2.1ListModel271
11.2.2WorkerScript273
11.2.3ObjectModel275
11.2.4DelegateModel275
11.2.5Package277
11.2.6XmlListModel278
11.2.7LocalStorage279
11.2.8使用C++擴展QML模型282
11.3視圖類型285
11.3.1ListView286
11.3.2GridView291
11.3.3視圖過渡292
11.3.4PathView295
11.3.5WebView298
11.4調整性能299
11.5小結300
第12章多媒體應用301
12.1多媒體模塊介紹301
12.2播放音頻302
12.2.1播放壓縮音頻302
12.2.2播放未壓縮音頻304
12.3播放視頻304
12.3.1使用Video播放視頻文件304
12.3.2對視頻使用圖形效果305
12.4媒體播放器(MediaPlayer)308
12.4.1播放音視頻308
12.4.2使用Windows平颱附加功能309
12.5小結314
第13章QML與C++的集成315
13.1QML運行時的C++類316
13.1.1QQmlEngine316
13.1.2QQmlContext317
13.1.3QQmlComponent318
13.1.4QQmlExpression320
13.2在QML中使用C++特性320
13.2.1數據類型處理和擁有權320
13.2.2數據類型的轉換321
13.2.3使用C++屬性323
13.2.4使用函數和槽327
13.2.5使用信號328
13.3注冊QML類型329
13.3.1注冊可實例化對象類型329
13.3.2注冊不可實例化對象類型330
13.3.3注冊單例類型330
13.3.4類型的修訂和版本331
13.4定義QML特定類型和屬性332
13.4.1提供附加對象注解數據332
13.4.2屬性修飾符類型335
13.4.3指定QML對象類型的默認屬性337
13.4.4接收對象初始化通知337
13.5在C++中使用QML對象338
13.5.1使用C++加載QML對象338
13.5.2使用對象名字訪問加載的QML對象339
13.5.3使用C++訪問QML對象成員340
13.6小結343
第14章使用Qt Quick設計器344
14.1常用操作介紹345
14.1.1管理項目層次345
14.1.2QML類型庫346
14.1.3指定項目屬性347
14.1.4添加狀態349
14.1.5在畫布上操作QML類型349
14.2使用設計器編輯QML文檔351
14.2.1創建項目351
14.2.2創建主視圖351
14.2.3添加視圖355
14.2.4為視圖添加動畫356
14.3小結358
附錄AQt 版本介紹359
附錄BQt 5中C++ API更改361
附錄CQML常用術語371
參考文獻373
前言/序言
Qt 5編程入門的原型是網絡上的一係列Qt博客教程,是該係列教程衍生齣的第三本。2012年齣版的《Qt Creator快速入門》和《Qt及Qt Quick開發實戰精解》至今已經有兩年多的時間,在這期間Qt的命運發生瞭翻天覆地的變化。2012年8月,諾基亞將Qt齣售給同在芬蘭的Digia公司,後者緻力於發展Qt的商業授權用戶,同時提供瞭Qt社區的良好運行環境。伴隨著Qt Project(qt�瞤roject.org)的成立,Qt本身的開發終於成為一個真正的開放源代碼項目。之後的Qt 5發布,使得Qt已經開始支持包括Windows、Linux、Mac OS X、Android、iOS、BlackBerry、Sailfish等在內的十幾個桌麵和移動平颱。我們看到Qt的身世一波三摺,但是又有足夠的理由相信Qt的未來會越來越好。 因為在博客中發錶Qt教程,所以認識瞭很多Qt愛好者和普及者,其中包括本書的另外一名作者程梁(網名豆子、devbean)。豆子與我的經曆類似:我從2009年開始在百度博客上編寫Qt Creator係列教程,因為圖文並茂,簡單易懂,所以得到瞭眾多網友的肯定;而豆子也從2009年開始,在51 CTO博客中推齣Qt學習之路係列教程,因為講解細緻,擁有自己的獨到見解,所以受到瞭廣大網友的熱捧,後來被51 CTO專題收錄,現在總瀏覽量已有數百萬。後來我從百度博客遷移到自己的yafeilinux.com個人博客,而豆子也從51 CTO博客轉移到自己的個人博客網站devbean.net。有著如此相似經曆的兩個人走到一起會發生什麼呢?就是組建瞭更符閤網友需求的Qter開源社區(qter.org)。這個社區一直在發展,我們的目標就是要為各位緻力於學習Qt的朋友提供一個便捷之門。 隨著Qt 5的發布,我們經常可以在論壇上看到需要Qt 5相關教程和書籍的朋友。Qt 5的全新框架、Qt Quick 2 技術以及最新版本的 Qt 提供瞭對現在非常流行的Android和iOS等移動平颱的支持,都使得現在想要學習Qt的讀者數量劇增。現階段國內外圖書市場上極少有關於Qt 5的書籍,但是卻擁有眾多需要該類書籍的初學者和開發者。為瞭解決這個矛盾,我和豆子決定再做一次第一個吃螃蟹的人,從而有瞭本書。 Qt的曆史 Qt是由奇趣科技公司(Trolltech)的兩位創始人Haavard Nord和Eirik Chambe�睧ng閤作開發而成的,首個版本完成於1991年,而第一個商業版本則是在1995年纔正式推齣。 Qt的名字來源於一個有趣的故事。當時這個工具之所以取名為Qt,是因為在Haavard的Emacs字體中,字母Q看起來非常漂亮;而字母t的靈感則來源於當時的另外一個工具Xt(X toolkit)的取名。 最初Qt隻有兩個版本:適用於類Unix平颱的Qt/X11和適用於Windows平颱的Qt/Windows。其中,Windows版本隻有專利授權,這意味著如果需要將使用Qt/X11編寫的開源應用移植到Windows平颱,必須購買專利授權。 2001年底,奇趣科技發布Qt 3.0,從這個版本起,Qt增加瞭對Mac OS X平颱的支持。不過,直到2003年6月之前,Mac OS X版本的Qt也隻有專利授權。當Qt 3.2發布的時候,奇趣科技纔增加瞭Mac OS X平颱的GPL授權。 2005年6月28日,奇趣科技發布瞭Qt 4.0。這是一個全新的版本,與之前的3.x係列不僅二進製不兼容,甚至API也不兼容。這在一定程度上使人頗有微詞。 2008年6月17日,諾基亞公司宣布以公開競購的方式收購奇趣科技,連同奇趣科技旗下的Qt。同年,諾基亞將Qt的名字更改為Qt Software,然後又更改為Qt Development Framework。在諾基亞的領導下,Qt的工作重心由桌麵係統轉移至諾基亞旗下的手持設備。2009年5月11日,諾基亞宣布Qt源代碼在著名的git托管平颱Gitotious麵嚮公眾開放,標誌著Q
Qt 5編程入門 下載 mobi epub pdf txt 電子書 格式