Qt Quick教程第一篇:前言

大家好畸陡,我是吉米,這是一系列Qt Quick相關(guān)技術(shù)教程的首篇架忌。這個教程構(gòu)思已久吞彤,卻從未動手,被自己的拖延癥再一次折服叹放。不過好在工作中這方面的開發(fā)一直沒斷過饰恕,所以相關(guān)的經(jīng)驗也更多了。從現(xiàn)在開始井仰,讓我們一起開始學(xué)習(xí)吧埋嵌。

教程面向?qū)ο?/h2>

之前看到過一部講Qt Quick的書,叫《Qt Quick核心編程》俱恶,磚頭一本雹嗦,但翻了下實在忍不住吐槽:這哪里叫核心啊合是?這分明只是Quick Start之類的簡易教程了罪。可見現(xiàn)在技術(shù)界浮躁之甚聪全,自己沒怎么弄明白呢就開始出書了泊藕。我這個系列的教程本著知無不言童叟無欺的態(tài)度,結(jié)合我這兩年來生產(chǎn)環(huán)境中實踐所得难礼,力求講解清楚娃圆,深入淺出汽久。但是也需要作為讀者的你有以下基礎(chǔ):

  1. 有Qt編程基礎(chǔ),Widgets方面的就行踊餐;
  2. 有JavaScript基礎(chǔ),不需要精通臀稚,能看懂就行(完全不會的話先網(wǎng)上看看JS教程吧)吝岭;
  3. 有CMake基礎(chǔ),我們的例子都將以CMake構(gòu)建(而不是Qt自帶的qmake吧寺,原因后面講)窜管,所以沒用過CMake的同學(xué)請先了解下CMake的基本用法。

學(xué)習(xí)稚机、使用Qt Quick的起因

我從2016年初開始接觸Qt Quick幕帆。雖然從07年大二開始就用Qt,但一直停留在Widgets赖条,對QML這一塊好奇但沒敢碰失乾。究其原因一是覺得Widgets足夠好了,應(yīng)付日澄痴В科研開發(fā)足以碱茁;二是對JS這種腳本語言不是很感冒,因為在我的領(lǐng)域——信息安全仿贬、三維渲染——性能是最重要的纽竣。這樣一直過了2015年,我甚至沒用過Qt5茧泪。

事情在2016年發(fā)生了變化蜓氨。工作之后,公司交給我一個任務(wù)队伟,設(shè)計開發(fā)一個軟件框架穴吹,以改進(jìn)現(xiàn)有的軟件質(zhì)量。說實話缰泡,當(dāng)初是沒底的刀荒。一是沒做過什么軟件框架,二是我自己掌握的開發(fā)技術(shù)也不先進(jìn)啊棘钞。當(dāng)時公司已經(jīng)開始往Qt轉(zhuǎn)了缠借,而我被認(rèn)為是Qt方面的專家(捂臉)。然后有個同事問我會不會Qt Quick宜猜,我說不會泼返,有點尷尬。既然給了任務(wù)姨拥,就要認(rèn)真對待绅喉。我觀察到:

  1. 多種跡象表明渠鸽,Qml/Quick將是未來Qt著重發(fā)力的一塊,而Widgets被認(rèn)為Done柴罐,即已完成徽缚,未來不會再有新功能加入,只會對重要bug做修復(fù)革屠;
  2. 公司的狀態(tài)也已經(jīng)從生存到了想要提高用戶體驗的階段了凿试;
  3. 不少國際大廠的軟件設(shè)計已經(jīng)擺脫了傳統(tǒng)工業(yè)專業(yè)化軟件的那種刻板、簡陋似芝、復(fù)雜的風(fēng)格那婉,轉(zhuǎn)而向易用、扁平党瓮、響應(yīng)式详炬、美觀方向邁進(jìn)。

所以采用Quick構(gòu)建新一代軟件架構(gòu)似乎是順理成章的事寞奸。當(dāng)然還有一點:我是Qt專家呛谜,我怎么可以不會Qt最新技術(shù)呢?

但當(dāng)時別說國內(nèi)了枪萄,國外也沒多少Q(mào)t Quick這方面的技術(shù)文章呻率,StackoverFlow上沒記錯的話只有區(qū)區(qū)一百多個問題。沒辦法呻引,只能邊看Qt文檔邊實踐礼仗。于是風(fēng)風(fēng)火火、坑坑洼洼的Qt學(xué)習(xí)之旅開始了逻悠,時至今日已逾兩年元践。

技術(shù)優(yōu)勢

界面開發(fā)庫數(shù)量眾多,那從技術(shù)上講童谒,Qt Quick和Qt Widgets相比单旁,或者和其他界面庫例如wxWidgets、GTK+饥伊、duilib等相比如何呢象浑?

首先,我們將這些界面庫分分類琅豆,可以分為兩類:

  1. 傳統(tǒng)界面庫愉豺。包括Qt Widgets、wxWidgets茫因、GTK+這些蚪拦,通過對底層操作系統(tǒng)圖形界面的封裝來繪制窗體,實現(xiàn)跨平臺;
  2. 像素界面庫驰贷,用英文講叫Pixel UI盛嘿。包括duilib、CEGUI以及我們的主角Qt Quick括袒。這類界面庫直接調(diào)用底層顯卡接口次兆,操作顯存中的每個像素。它實際上是直接在這些像素中構(gòu)建出窗口組件锹锰、事件消息等上層邏輯概念类垦。

這兩類界面庫的對比如下:

傳統(tǒng)界面庫 像素界面庫
性能 ,依賴于CPU 城须,依賴于CPU、GPU
原生樣式 米苹,因為調(diào)用系統(tǒng)界面庫糕伐,所以擁有原生的界面樣式,和操作系統(tǒng)風(fēng)格一致 蘸嘶,由于直接操作顯卡良瞧,不調(diào)用系統(tǒng)界面接口,需要自行模擬系統(tǒng)樣式
可擴(kuò)展性 训唱,由于系統(tǒng)界面庫的封裝褥蚯,想要改某些細(xì)微樣式非常困難 ,由于能操作每個像素况增,想怎么改就怎么改
移動平臺支持 赞庶,由于這些界面庫出道的時候,移動平臺還沒興起澳骤,所以在這些平臺上有些水土不服歧强,尤其是觸屏支持不好 ,設(shè)計之初就考慮了移動平臺为肮,OpenGL ES也支持完善
動畫摊册、響應(yīng)式支持 集绰,受限于系統(tǒng)界面庫的能力弃锐,要實現(xiàn)豐富柠偶、流暢的動畫比較困難 养泡,由于底層就是對像素進(jìn)行操作榆纽,各種動畫就是對這些像素的一種宏觀邏輯上的變化龙宏,并不改變底層渲染的機(jī)制东亦,所以支持完善寝贡、流暢
穩(wěn)定性 重斑,由于開發(fā)那么多年了熬荆,該發(fā)現(xiàn)的bug應(yīng)該差不多都發(fā)現(xiàn)了 ,限于發(fā)展時間短,應(yīng)用范圍不廣卤恳,開發(fā)推進(jìn)快累盗,所以沒有傳統(tǒng)界面庫那么穩(wěn)定。

從上面的表格我們可以總結(jié)這兩類技術(shù)各自的適應(yīng)范圍:

  • 傳統(tǒng)界面庫適合于專業(yè)性的突琳、工業(yè)型的程序若债,不要求花哨的界面,只要點下按鈕拆融、選擇菜單就能工作蠢琳,最重要的是穩(wěn)定、能如期提供需要的功能镜豹;
  • 像素界面庫則適合于用戶體驗要求高傲须、講究使用流程的應(yīng)用,例如面向普通用戶的手機(jī)app趟脂、桌面軟件等泰讽,最重要的是使用流暢、美觀大方昔期,在不那么buggy的情況下偶爾出點小問題也是可以容忍的已卸。

從這個分析角度講,Qt Widgets適合于第一種情況硼一,而Qt Quick更適合于第二種情況累澡。而第二種情況正是當(dāng)時公司所想要轉(zhuǎn)型的方向。但這種區(qū)別也不是固定的般贼,目前Qt Quick出來也有些年數(shù)了愧哟,它的穩(wěn)定性已經(jīng)大好于從前;而工業(yè)界的軟件開發(fā)水平逐漸提高哼蛆,已經(jīng)從之前的只要work就行的需求提升到也講究用戶體驗的境界了(這個前面提過了)翅雏。同樣兩個功能完備的軟件,一個設(shè)計優(yōu)良人芽,一個毛毛糙糙望几,你說工程師更愿意用哪個?所以最終都是要講究用戶體驗的萤厅。

Qt Quick的這些技術(shù)優(yōu)勢正是我最終選擇它的原因橄抹。

開發(fā)環(huán)境

文章末尾還要交代下這個教程用的開發(fā)環(huán)境以及選擇原因:

名稱 版本號 原因
Windows操作系統(tǒng) Windows 10 64位 新系統(tǒng),比以前的好用(個人感覺)
Qt 5.9 for VS2015 64位 5.9是LTS版本(即Long Term Support惕味,長期支持)楼誓,更適合于生產(chǎn)環(huán)境
Visual Studio 2015 Community,update 3 社區(qū)版是免費的名挥,而VS2015比之前的版本對C++11的支持好太多了
CMake 3.9.6 很多類庫都提供CMake支持疟羹,而且公司內(nèi)已經(jīng)在推廣了

上面只是我自己在用的環(huán)境,不是必須一致的。但最好一樣榄融,減少很多環(huán)境差異導(dǎo)致的不一致情況参淫。

這篇文章就到這里了。下篇文章我們將馬上動手做一個簡單Quick程序愧杯,然后剖析這個程序的結(jié)構(gòu)涎才。敬請期待。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末力九,一起剝皮案震驚了整個濱河市耍铜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跌前,老刑警劉巖棕兼,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抵乓,居然都是意外死亡伴挚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門臂寝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摊灭,你說我怎么就攤上這事咆贬。” “怎么了帚呼?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵掏缎,是天一觀的道長。 經(jīng)常有香客問我煤杀,道長眷蜈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任沈自,我火速辦了婚禮酌儒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枯途。我一直安慰自己忌怎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布酪夷。 她就那樣靜靜地躺著榴啸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晚岭。 梳的紋絲不亂的頭發(fā)上鸥印,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼库说。 笑死狂鞋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璃弄。 我是一名探鬼主播要销,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夏块!你這毒婦竟也來了疏咐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤脐供,失蹤者是張志新(化名)和其女友劉穎浑塞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體政己,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡酌壕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歇由。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卵牍。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沦泌,靈堂內(nèi)的尸體忽然破棺而出糊昙,到底是詐尸還是另有隱情,我是刑警寧澤谢谦,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布释牺,位于F島的核電站,受9級特大地震影響回挽,放射性物質(zhì)發(fā)生泄漏没咙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一千劈、第九天 我趴在偏房一處隱蔽的房頂上張望祭刚。 院中可真熱鬧,春花似錦墙牌、人聲如沸袁梗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遮怜。三九已至,卻和暖如春鸿市,著一層夾襖步出監(jiān)牢的瞬間锯梁,已是汗流浹背即碗。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留陌凳,地道東北人剥懒。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像合敦,于是被迫代替她去往敵國和親初橘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,501評論 25 707
  • 1.初識 Qt5 本書將為大家介紹使用 Qt 5.x 版本開發(fā)應(yīng)用程序的不同方面充岛。我們將專注于新的 Qt Quic...
    趙者也閱讀 2,537評論 0 8
  • Qt是屬于一個跨平臺的GUI開發(fā)軟件保檐,支持的平臺有Unix、Linux崔梗、Windows/WinCE夜只、IOS等。 Q...
    一葉之界閱讀 8,144評論 0 17
  • 前言 關(guān)于Qt的學(xué)習(xí)道路需要不斷日積月累蒜魄,下面有一些學(xué)習(xí)資料提供給大家:Qt官網(wǎng)扔亥、編碼風(fēng)格、GitHub & Th...
    YBshone閱讀 5,710評論 3 95
  • 見縫插針,又在購物車放了點東西伞鲫。 準(zhǔn)備雙十一也有陣子了粘茄,臨到跟前覺得還有很多需要的沒有整理出來。燒腦的各種優(yōu)惠方式...
    Clearness閱讀 295評論 0 0