當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] 一、前言  說到Qt,不能不說到C++,這門偉大的語言。因為其面向?qū)ο蟮木幊趟枷牒投盖偷膶W習曲線,一開始學習起來很是吃力。Qt從QT4開始基本封裝了很多C++的工具庫和界面

 一、前言  說到Qt,不能不說到C++,這門偉大的語言。因為其面向?qū)ο蟮木幊趟枷牒投盖偷膶W習曲線,一開始學習起來很是吃力。Qt從QT4開始基本封裝了很多C++的工具庫和界面庫,而且支持跨平臺,這是它最大的優(yōu)勢。相比于古老的MFC和使用C#的WPF來說,我更喜歡Qt來進行C++的界面設(shè)計,這也是我從新開始拾起Qt學習之路的原因。

說完了感受和學習的原因,就開始介紹Qt5了。我這里只做簡單的介紹,重要的還是在學習過程中體會Qt的編程邏輯和設(shè)計思想。

Qt,坦白來說,并不只是一個界面庫,他是C++編程思想的集大成者。它是得到完善的C++應(yīng)用程序框架。使用Qt,在一定程度上你獲得的是一個“一站式”、“全方位”的解決方案,STL。string、XML、數(shù)據(jù)庫、網(wǎng)絡(luò)這些零散的功能都包含在Qt中,并且得到了封裝,一共開發(fā)者使用。

跨平臺GUI通常有三種實現(xiàn)策略,分別是:

API 映射:API 映射是說,界面庫使用同一套 API,將其映射到不同的底層平臺上面。大體相當于將不同平臺的 API 提取公共部分。比如說,將 Windows 平臺上的按鈕控件和 Mac OS 上的按鈕組件都取名為 Button。當你使用 Button 時,如果在 Windows 平臺上,則編譯成按鈕控件;如果在 Mac OS 上,則編譯成按鈕組件。這么做的好處是,所有組件都是原始平臺自有的,外觀和原生平臺一致;缺點是,編寫庫代碼的時候需要大量工作用于適配不同平臺,并且,只能提取相同部分的 API。比如 Mac OS 的文本框自帶拼寫檢測,但是 Windows 上面沒有,則不能提供該功能。這種策略的典型代表是 wxWidgets。這也是一個標準的 C++ 庫,和 Qt 一樣龐大。它的語法看上去和 MFC 類似,有大量的宏。據(jù)說,一個 MFC 程序員可以很容易的轉(zhuǎn)換到 wxWidgets 上面來。

API 模擬:前面提到,API 映射會“缺失”不同平臺的特定功能,而 API 模擬則是解決這一問題。不同平臺的有差異 API,將使用工具庫自己的代碼用于模擬出來。按照前面的例子,Mac OS 上的文本框有拼寫檢測,但是 Windows 的沒有。那么,工具庫自己提供一個拼寫檢測算法,讓 Windows 的文本框也有相同的功能。API 模擬的典型代表是 wine ——一個 Linux 上面的 Windows 模擬器。它將大部分 Win32 API 在 Linux 上面模擬了出來,讓 Linux 可以通過 wine 運行 Windows 程序。由此可以看出,API 模擬最大優(yōu)點是,應(yīng)用程序無需重新編譯,即可運行到特定平臺上。另外一個例子是微軟提供的 DirectX,這個開發(fā)庫將屏蔽掉不同顯卡硬件所提供的具體功能。使用這個庫,你無需擔心硬件之間的差異,如果有的顯卡沒有提供該種功能,SDK 會使用軟件的方式加以實現(xiàn)。

GUI 模擬:任何平臺都提供了圖形繪制函數(shù),例如畫點、畫線、畫面等。有些工具庫利用這些基本函數(shù),再不同繪制出自己的組件,這就是 GUI 模擬。GUI 模擬的工作量無疑是很大的,因為需要使用最基本的繪圖函數(shù)將所有組件畫出來;并且這種繪制很難保證和原生組件一模一樣。但是,這一代價帶來的優(yōu)勢是,可以很方便的修改組件的外觀——只要修改組件繪制函數(shù)即可。很多跨平臺的 GUI 庫都是使用的這種策略,例如 gtk+(這是一個 C 語言的圖形界面庫。使用 C 語言很優(yōu)雅地實現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計。不過,這也同樣帶來了一個問題——使用大量的類型轉(zhuǎn)換的宏來模擬多態(tài),并且它的函數(shù)名一般都比較長,使用下劃線分割單詞,看上去和 Linux 如出一轍。gtk+ 并不是模擬的原生界面,而有它自己的風格,所以有時候就會和操作系統(tǒng)的界面格格不入。),Swing 以及我們的 Qt。

Qt 和 wxWidgets 一樣,也是一個標準的 C++ 庫。但是它的語法類似于 Java 的 Swing,十分清晰,而且使用信號槽(signal/slot)機制,讓程序看起來很明白——這也是很多人優(yōu)先選擇 Qt 的一個很重要的原因。不過,所謂“成也蕭何,敗也蕭何”。這種機制雖然很清楚,但是它所帶來的后果是你需要使用 Qt 的 moc 對程序進行預(yù)處理,才能夠再使用標準的 make 或者 nmake 進行正常的編譯,并且信號槽的調(diào)用要比普通的函數(shù)調(diào)用慢大約一個數(shù)量級(Qt 4 文檔中說明該數(shù)據(jù),但 Qt 5 尚未有官方說明)。Qt 的界面也不是原生風格的,盡管 Qt 使用 style 機制十分巧妙地模擬了原生界面。另外值得一提的是,Qt 不僅僅能夠運行在桌面環(huán)境中,還可以運行在嵌入式平臺以及手機平臺。

Qt 第一版于 1991 年由 Trolltech (奇趣科技)發(fā)布。后來在 2008 年,Nokia 斥資 1.5 億美元收購 TrollTech,將 Qt 應(yīng)用于 Symbian 程序開發(fā)。2012 年 8 月 9 日,Nokia 將 Qt 以 400 萬歐元的價格出售給 Digia。

伴隨著 Qt,一直有兩種授權(quán)協(xié)議:商業(yè)授權(quán)以及開源授權(quán)。在 Qt 的早期版本,商業(yè)授權(quán)包含一些開源授權(quán)不提供的組件,但是在近期版本則不存在這個問題。以往人們對 Qt 的開源授權(quán)多有詬病。早期版本的 Qt 使用與 GPL 不兼容的協(xié)議授權(quán),這直接導致了 KDE 與 GNOME 的戰(zhàn)爭(由于 Linux 使用 GPL 協(xié)議發(fā)布,GPL 協(xié)議具有傳染性,作為 Linux 桌面環(huán)境的 KDE 卻是基于與 GPL 不兼容的 Qt 開發(fā),這就不遵守 GPL 協(xié)議)。不過,現(xiàn)在 Qt 的開源版本使用的是 GPLv3 以及 LGPL 協(xié)議。這意味著,你可以將 Qt 作為一個庫連接到一個閉源軟件里面??梢哉f,Qt 協(xié)議的爭議已經(jīng)不存在了。

回到頂部(go to top)

二、Qt的安裝與配置2.1 Qt的安裝

 

 

上面是兩種Qt,第一種是使用mingw編譯和調(diào)試開發(fā)的Qt,第二種(紅線中)是使用msvc也就是vs調(diào)試和編譯的Qt。開始學習的建議安裝第一種,自帶gcc編譯器和gdb調(diào)試器。安裝過程就不說了,一路綠燈就行,安裝完之后的狀態(tài)如下圖。

 

 

2.2Qt的項目創(chuàng)建

 

 

 

一直往下,中間過程就是自己改一下項目的名字和文件名字,直到出現(xiàn)下面的圖,就是創(chuàng)建完成了。

 

 

 

 

上圖是創(chuàng)建好的工程,這樣就是可以運行的。

2.3 Qt的配置這里說一下mingw版本的配置,此外msvc版本的Qt的編譯器和調(diào)試器都是msvc(我的具體版本是MSVC2013)。

我的是32bit,然后所有的編譯器和調(diào)試器都是套件自帶的,不用另行下載。

 

 

 

 

 

 

好了,Qt的開始工作做好了,就可以開始學習了,就先到這里。

no pains ,no gains. 給自己加油,為未來奮斗。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉