真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

為什么qt成為c++界面編程的第一選擇

一、前言

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供隴南網(wǎng)站建設(shè)、隴南做網(wǎng)站、隴南網(wǎng)站設(shè)計(jì)、隴南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、隴南企業(yè)網(wǎng)站模板建站服務(wù),10年隴南做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

為什么現(xiàn)在QT越來越成為界面編程的第一選擇,筆者從事qt界面編程已經(jīng)有接近8年,在這之前我做C++界面都是基于MFC,也做過5年左右。當(dāng)時(shí)為什么會從MFC轉(zhuǎn)到QT,主要原因是MFC開發(fā)界面想做得好看一些十分困難,引用第三方基于MFC的界面庫代碼也是比較混亂,當(dāng)時(shí)主要看到qt有qss樣式設(shè)計(jì)這個(gè)功能,決定試下。當(dāng)項(xiàng)目移植到到QT后,覺得MFC真的是可以拋棄了,MFC相對于QT缺點(diǎn)實(shí)在太多。當(dāng)然MFC還有一個(gè)致命的缺陷,沒法跨平臺。

當(dāng)然有同學(xué)可能說為什么不直接使用C# WPF做界面,我們一些項(xiàng)目和工具確實(shí)是用C#做的,C#和C++也確實(shí)可以互相調(diào)用,并且可以斷點(diǎn)調(diào)試。但在性能上還是有不少的損失。對于我們做的音視頻和三維仿真項(xiàng)目確實(shí)有影響,所以只在一些對性能沒有極致要求的項(xiàng)目中使用C#。

二、QT歷史

說了一些我們項(xiàng)目的情況,再來簡單介紹一下QT歷史,知道歷史的目的是要判斷使用此庫是否有風(fēng)險(xiǎn),是否會停止更新,很多開源庫沒有做好商業(yè)化最終都是停掉了。

l QT由奇趣科技公司開發(fā)

l 2008 諾基亞從奇趣科技公司收購Qt, 并增加LGPL的授權(quán)模式

l 2011 芬蘭的Digia從Nokia收購了Qt的商業(yè)版權(quán),從此Nokia負(fù)責(zé)Qt on Mobile, Qt Commercial由Digia負(fù)責(zé)

QT的開發(fā)的最高峰是在諾基亞智能手機(jī)如日中天的時(shí)候,那時(shí)候諾基亞塞班系統(tǒng)的手機(jī)應(yīng)用大量都是基于QT,隨著蘋果和安卓的流行,塞班退出歷史舞臺。qt的手機(jī)端開發(fā)需求也基本被替代。但QT在嵌入式、電力系統(tǒng)、軍工系統(tǒng)中應(yīng)用一直沒有被替代。

三、QT現(xiàn)在使用情況

了解一下他現(xiàn)在的情況,主要考慮應(yīng)用場景是否多,就業(yè)是否廣,人才是否好招聘。

QT被廣泛應(yīng)用于嵌入式、電力系統(tǒng)、軍工系統(tǒng)等要與硬件交互的界面系統(tǒng)中,并且大量的專業(yè)的跨平臺應(yīng)用軟件也是使用QT開發(fā)。

digia接手QT后開發(fā)出了安卓和IOS版本的QT,實(shí)現(xiàn)了開發(fā)一套程序可以在全平臺運(yùn)行。但目前不建議使用QT開發(fā)安卓和IOS應(yīng)用,坑還比較多但肯定會越來越完善。

我們列出QT開發(fā)的軟件:

1.Autodesk May:阿凡達(dá)和功夫熊貓的3D動畫制作軟件

2.WPS:在wps的目錄中的可以看到QT的的dll庫

3.金山詞霸

4.google earth

5.微軟的skype

6.virtualbox(oracle的虛擬機(jī)軟件)

(太多了就不一一列出了)

四、QT提供的工具

再看下QT提供了哪些工具,QT不僅提供了功能豐富的SDK開發(fā)包,還提供了強(qiáng)大的工具,這也是我們選擇他的原因之一。

1. 基于VS的插件qt-vs-addin

最新版本提供了2013和2015的版本,舊的版本目前用不起來,但現(xiàn)在c++開發(fā)基本主流至少vs2013了。

 為什么qt成為c++界面編程的第一選擇

 

2. Qt助手(手冊)

qt的手冊還是比較完備,并且包含了很多示例的源碼。

為什么qt成為c++界面編程的第一選擇

 

 

3. 基于XML的界面設(shè)計(jì)器Qt Designer

便捷的解碼設(shè)計(jì),應(yīng)該是c++領(lǐng)域最方便的界面設(shè)計(jì)器。

 為什么qt成為c++界面編程的第一選擇

 

4. 跨平臺的開發(fā)工具 QtCreator

跨平臺的c++開發(fā)工具,應(yīng)該是在linux上最方便的c++開發(fā)調(diào)試工具,就算不用QT庫,也可以用它來開發(fā)跨平臺的c++項(xiàng)目。

為什么qt成為c++界面編程的第一選擇

 

 

五、QT框架優(yōu)勢

最后我們看下QT有哪些具體優(yōu)勢

1. 工具豐富

這個(gè)前面已經(jīng)對它的工具做了介紹。

2. 功能豐富

出了提供了界面庫之外,還提供了音頻庫,3d庫,數(shù)據(jù)庫SDK,WebEngine,網(wǎng)絡(luò)庫等,讓我們做跨平臺程序變得簡便。

3. 開源并跨平臺

出了可以自己通過QT源碼進(jìn)行移植之外,qt官方就已經(jīng)提供了再windows,Android,ios,linux中運(yùn)行的SDK。

4. 架構(gòu)的優(yōu)勢

這部分優(yōu)勢很多,我們列出一些示例,可以看出它的優(yōu)勢。

界面源碼與用戶源碼的隔離,qt的策略是沒有界面都會生成一個(gè)對應(yīng)的源碼,比如有一個(gè)界面設(shè)計(jì)文件xps.ui 它會解析其中的xml生成一個(gè)對應(yīng)了ui_xps.h 文件,這個(gè)文件你不需要修改,如果要調(diào)用界面中的控件直接通過 Ui::XPSClass ui; 這個(gè)對象定義也是寫在ui_xps.h中。也就是你的業(yè)務(wù)邏輯就和界面控件對象的創(chuàng)建和設(shè)置做了隔離。

事件處理的便捷(靈活的信號槽機(jī)制),qt提供了信號槽機(jī)制,可以很好的降低耦合,提升代碼的復(fù)用性。

例如有這樣一個(gè)需求,我的一個(gè)XMov類專門處理視頻,但要把處理進(jìn)度告知外部界面XSlider的對象,我處理方法,可以XMov提供接口給外部獲取進(jìn)度,或者是主動調(diào)用外部接口來刷新顯示進(jìn)度,第一種方法實(shí)時(shí)性得不到保障,并且界面端程序也需要引入XMov類頭文件,也就是做了關(guān)聯(lián)。第二種方法使得XMov類的耦合性加大,當(dāng)界面發(fā)生變化是XMov類需要修改。QT中了信號槽機(jī)制可以讓兩個(gè)類XMov和XSlider關(guān)聯(lián)起來,在XMov中直接定義一個(gè)信號函數(shù)void SetPos(int),直接綁定到XSlider對象的void SetPos(int) 槽函數(shù),二者互相都不知道,降低耦合性。只在統(tǒng)一的入口類中將各個(gè)模塊直接的信號槽關(guān)聯(lián)起來。

XMov::run()

{

while(!sExit)

{

//處理視頻

int pos = DealMove();

 

//發(fā)出信號,信號如果沒有綁定,這步調(diào)用也不會出問題

SetPos(pos);

}

}

 

綁定方法

 connect(xmov,SIGNAL(SetPos(int)),xslider,SLOT(SetPos(int)))

這就是信號槽的一種好處,當(dāng)然信號槽也是處理各類控件的自定義事件。

5. 及其便捷的樣式設(shè)計(jì)(像開發(fā)web程序一樣設(shè)計(jì)界面)

可以很容易的做一個(gè)圓角邊框,并且有漸變效果,鼠標(biāo)移上去還發(fā)生變化,可以參考下面的樣式表,qss基本和css類似,包括支持css的選擇器,可以通過類名,對象名,和父類名稱來設(shè)置。

 

為什么qt成為c++界面編程的第一選擇

 

 

QPushButton:!hover

{

background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(120, 120, 120, 255), stop:0.495 rgba(39, 39, 39, 255), stop:0.505 rgba(39,39, 39, 255), stop:1 rgba(120, 120,120, 255));

border-radius:5px;

}

QPushButton:hover /* hover 鼠標(biāo)懸停*/

{

background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(39, 39, 39, 255), stop:0.495 rgba(120, 120, 120, 255), stop:0.505 rgba(120,120, 120, 255), stop:1 rgba(39, 39,39, 255));

border-radius:5px; /*圓角邊框*/

}

后面會陸續(xù)推出qt相關(guān)文章,這篇文章主要做簡介,后面會分塊詳細(xì)講解。

更多內(nèi)容也可以關(guān)注我的51cto學(xué)院中的視頻課程

更多的資料也可以關(guān)注我51cto上的視頻課程

夏老師的課堂 http://edu.51cto.com/lecturer/12016059.html

C++QT5跨平臺界面編程原理和實(shí)戰(zhàn)大全視頻課程

http://edu.51cto.com/course/11507.html

為什么qt成為c++界面編程的第一選擇


文章題目:為什么qt成為c++界面編程的第一選擇
網(wǎng)頁鏈接:http://weahome.cn/article/jcccos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部