那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么現(xiàn)在QT越來(lái)越成為界面編程的第一選擇?

strongerHuang ? 來(lái)源:老夏課堂 ? 作者:夏曹俊 ? 2021-05-08 10:12 ? 次閱讀

Qt可以說(shuō)是UI界的經(jīng)典,今天為大家分享一篇關(guān)于Qt的內(nèi)容。

1

前言為什么現(xiàn)在QT越來(lái)越成為界面編程的第一選擇,筆者從事qt界面編程已經(jīng)有接近8年,在這之前我做C++界面都是基于MFC,也做過(guò)5年左右。

當(dāng)時(shí)為什么會(huì)從MFC轉(zhuǎn)到QT?主要原因是MFC開(kāi)發(fā)界面想做得好看一些十分困難,引用第三方基于MFC的界面庫(kù)代碼也是比較混亂,當(dāng)時(shí)主要看到qt有qss樣式設(shè)計(jì)這個(gè)功能,決定試下。當(dāng)項(xiàng)目移植到到QT后,覺(jué)得MFC真的是可以?huà)仐壛耍琈FC相對(duì)于QT缺點(diǎn)實(shí)在太多。當(dāng)然MFC還有一個(gè)致命的缺陷,沒(méi)法跨平臺(tái)。

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

2

Qt歷史

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

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

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

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

QT的開(kāi)發(fā)的最高峰是在諾基亞智能手機(jī)如日中天的時(shí)候,那時(shí)候諾基亞塞班系統(tǒng)的手機(jī)應(yīng)用大量都是基于QT,隨著蘋(píng)果和安卓的流行,塞班退出歷史舞臺(tái)。

qt的手機(jī)端開(kāi)發(fā)需求也基本被替代。但QT在嵌入式電力系統(tǒng)、軍工系統(tǒng)中應(yīng)用一直沒(méi)有被替代。

3

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

了解一下他現(xiàn)在的情況,主要考慮應(yīng)用場(chǎng)景是否多,就業(yè)是否廣,人才是否好招聘。QT被廣泛應(yīng)用于嵌入式、電力系統(tǒng)、軍工系統(tǒng)等要與硬件交互的界面系統(tǒng)中,并且大量的專(zhuān)業(yè)的跨平臺(tái)應(yīng)用軟件也是使用QT開(kāi)發(fā)。

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

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

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

2. 在wps的目錄中的可以看到QT的的dll庫(kù)

3. 金山詞霸

4. google earth

5. 微軟的skype

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

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

4

QT提供的工具

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

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

2. Qt助手(手冊(cè))

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

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

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

4. 跨平臺(tái)的開(kāi)發(fā)工具 QtCreator

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

5

QT框架優(yōu)勢(shì)最后我們看下QT有哪些具體優(yōu)勢(shì)1. 工具豐富這個(gè)前面已經(jīng)對(duì)它的工具做了介紹。

2. 功能豐富出了提供了界面庫(kù)之外,還提供了音頻庫(kù),3d庫(kù),數(shù)據(jù)庫(kù)SDK,WebEngine,網(wǎng)絡(luò)庫(kù)等,讓我們做跨平臺(tái)程序變得簡(jiǎn)便。

3. 開(kāi)源并跨平臺(tái) 出了可以自己通過(guò)QT源碼進(jìn)行移植之外,qt官方就已經(jīng)提供了再windows,Android,ios,linux中運(yùn)行的SDK。

4. 架構(gòu)的優(yōu)勢(shì)這部分優(yōu)勢(shì)很多,我們列出一些示例,可以看出它的優(yōu)勢(shì)。界面源碼與用戶(hù)源碼的隔離,qt的策略是沒(méi)有界面都會(huì)生成一個(gè)對(duì)應(yīng)的源碼,比如有一個(gè)界面設(shè)計(jì)文件xps.ui 它會(huì)解析其中的xml生成一個(gè)對(duì)應(yīng)了ui_xps.h 文件,這個(gè)文件你不需要修改,如果要調(diào)用界面中的控件直接通過(guò) Ui::XPSClass ui; 這個(gè)對(duì)象定義也是寫(xiě)在ui_xps.h中。也就是你的業(yè)務(wù)邏輯就和界面控件對(duì)象的創(chuàng)建和設(shè)置做了隔離。

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

例如有這樣一個(gè)需求,我的一個(gè)XMov類(lèi)專(zhuān)門(mén)處理視頻,但要把處理進(jìn)度告知外部界面XSlider的對(duì)象,我處理方法,可以XMov提供接口給外部獲取進(jìn)度,或者是主動(dòng)調(diào)用外部接口來(lái)刷新顯示進(jìn)度,第一種方法實(shí)時(shí)性得不到保障,并且界面端程序也需要引入XMov類(lèi)頭文件,也就是做了關(guān)聯(lián)。

第二種方法使得XMov類(lèi)的耦合性加大,當(dāng)界面發(fā)生變化是XMov類(lèi)需要修改。QT中了信號(hào)槽機(jī)制可以讓兩個(gè)類(lèi)XMov和XSlider關(guān)聯(lián)起來(lái),在XMov中直接定義一個(gè)信號(hào)函數(shù)void SetPos(int),直接綁定到XSlider對(duì)象的void SetPos(int) 槽函數(shù),二者互相都不知道,降低耦合性。只在統(tǒng)一的入口類(lèi)中將各個(gè)模塊直接的信號(hào)槽關(guān)聯(lián)起來(lái)。

XMov::run(){ while(!sExit) { //處理視頻 int pos = DealMove(); //發(fā)出信號(hào),信號(hào)如果沒(méi)有綁定,這步調(diào)用也不會(huì)出問(wèn)題 SetPos(pos); }}//綁定方法connect(xmov,SIGNAL(SetPos(int)),xslider,SLOT(SetPos(int)))

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

5. 及其便捷的樣式設(shè)計(jì)(像開(kāi)發(fā)web程序一樣設(shè)計(jì)界面)可以很容易的做一個(gè)圓角邊框,并且有漸變效果,鼠標(biāo)移上去還發(fā)生變化,可以參考下面的樣式表,qss基本和css類(lèi)似,包括支持css的選擇器,可以通過(guò)類(lèi)名,對(duì)象名,和父類(lèi)名稱(chēng)來(lái)設(shè)置。

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; /*圓角邊框*/}

原文標(biāo)題:為什么 qt 成為 c++ 界面編程的第一選擇?

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93989
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73859

原文標(biāo)題:為什么 qt 成為 c++ 界面編程的第一選擇?

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于QT開(kāi)發(fā)國(guó)產(chǎn)主板終端桌面程序 高效、穩(wěn)定、跨平臺(tái)的解決方案

    隨著國(guó)產(chǎn)化進(jìn)程的加速,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始關(guān)注國(guó)產(chǎn)硬件平臺(tái)的應(yīng)用開(kāi)發(fā)。國(guó)產(chǎn)主板作為硬件核心,其性能和穩(wěn)定性已經(jīng)得到了廣泛認(rèn)可。然而,如何在這些硬件平臺(tái)上開(kāi)發(fā)高效、穩(wěn)定的終端桌面程序,成為
    的頭像 發(fā)表于 01-08 15:34 ?179次閱讀

    把YOLOv11和Python Qt做個(gè)用戶(hù)界面程序

    早些時(shí)間,小編想把PID控制器優(yōu)化部分通過(guò)Py Qt來(lái)實(shí)現(xiàn)用戶(hù)界面化,不過(guò)看著窗口堆參數(shù),有點(diǎn)發(fā)怵:這玩意誰(shuí)用啊? 參考《PID控制器參數(shù)自動(dòng)優(yōu)化示例和比較》 后來(lái)就擱置了。 在通過(guò)Python
    的頭像 發(fā)表于 11-28 10:18 ?644次閱讀
    把YOLOv11和Python <b class='flag-5'>Qt</b>做個(gè)用戶(hù)<b class='flag-5'>界面</b>程序

    基于全志T113-i的系統(tǒng)快速啟動(dòng)顯示Qt界面、LVGL界面案例

    本文主要介紹基于創(chuàng)龍科技TLT113-EVM評(píng)估板(基于全志T113-i)的系統(tǒng)快速啟動(dòng)顯示Qt界面、LVGL界面案例,適用開(kāi)發(fā)環(huán)境如下。 Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit
    的頭像 發(fā)表于 11-27 09:18 ?622次閱讀
    基于全志T113-i的系統(tǒng)快速啟動(dòng)顯示<b class='flag-5'>Qt</b><b class='flag-5'>界面</b>、LVGL<b class='flag-5'>界面</b>案例

    LM324調(diào)零調(diào)好后,改變輸入的時(shí)候,輸出的偏差越來(lái)越大,怎么解決?

    調(diào)零調(diào)好后,改變輸入的時(shí)候,輸出的偏差越來(lái)越大,不知道如何調(diào)整,望大神指導(dǎo)!
    發(fā)表于 08-28 06:51

    嵌入式QT常見(jiàn)開(kāi)發(fā)方式有哪些?

    提供的豐富組件如按鈕、文本框、窗口等構(gòu)建傳統(tǒng)的桌面應(yīng)用風(fēng)格界面。對(duì)于嵌入式設(shè)備上的復(fù)雜用戶(hù)界面或者需要高性能響應(yīng)的應(yīng)用,Qt Widgets是個(gè)較為常用的
    發(fā)表于 08-12 10:05

    EtherCAT運(yùn)動(dòng)控制器上位機(jī)之Python+Qt):鏈接與單軸運(yùn)動(dòng)

    PC上位機(jī)Python+Qt混合編程,助力智能制造高效開(kāi)發(fā)。
    的頭像 發(fā)表于 07-31 09:43 ?496次閱讀
    EtherCAT運(yùn)動(dòng)控制器上位機(jī)之Python+<b class='flag-5'>Qt</b>(<b class='flag-5'>一</b>):鏈接與單軸運(yùn)動(dòng)

    QT5+OpenCV4搭建應(yīng)用開(kāi)發(fā)環(huán)境

    作為深度學(xué)習(xí)算法工程師,必須要掌握應(yīng)用開(kāi)發(fā)技能嗎?搞工程肯定是必須要會(huì)界面開(kāi)發(fā),QT就是個(gè)很不錯(cuò)的選擇。本文以QT5.15 + OpenC
    的頭像 發(fā)表于 07-23 11:23 ?1170次閱讀
    <b class='flag-5'>QT</b>5+OpenCV4搭建應(yīng)用開(kāi)發(fā)環(huán)境

    人機(jī)界面觸摸屏編程的基本概念及硬件選擇

    人機(jī)界面(Human-Machine Interface,簡(jiǎn)稱(chēng)HMI)觸摸屏編程種廣泛應(yīng)用于工業(yè)自動(dòng)化、智能家居、醫(yī)療設(shè)備等領(lǐng)域的技術(shù)。本文將詳細(xì)介紹HMI觸摸屏編程的基本概念、硬
    的頭像 發(fā)表于 07-01 14:42 ?2609次閱讀

    上位機(jī)可視化界面編程軟件有哪些

    。以下是些常見(jiàn)的上位機(jī)可視化界面編程軟件: Qt (跨平臺(tái)C++框架) 介紹 :Qt個(gè)跨平
    的頭像 發(fā)表于 06-06 10:48 ?2763次閱讀

    隨著非車(chē)規(guī)器件在汽車(chē)上泛濫FPGA會(huì)不會(huì)越來(lái)越多的出現(xiàn)在汽車(chē)上?

    隨著非車(chē)規(guī)器件在汽車(chē)上泛濫FPGA會(huì)不會(huì)越來(lái)越多的出現(xiàn)在汽車(chē)上?
    發(fā)表于 04-23 14:50

    Qt Group與高通公司合作,簡(jiǎn)化工業(yè)物聯(lián)網(wǎng)的用戶(hù)界面開(kāi)發(fā)

    公司于當(dāng)?shù)貢r(shí)間4月9日宣布,正在合作為工業(yè)物聯(lián)網(wǎng)設(shè)備簡(jiǎn)化高級(jí)圖形用戶(hù)界面 (GUI) 的開(kāi)發(fā)和軟件質(zhì)量保證。 Qt Group與高通公司合作,簡(jiǎn)化工業(yè)物聯(lián)網(wǎng)的用戶(hù)界面開(kāi)發(fā) Qt的跨平臺(tái)
    的頭像 發(fā)表于 04-10 14:12 ?481次閱讀
    <b class='flag-5'>Qt</b> Group與高通公司合作,簡(jiǎn)化工業(yè)物聯(lián)網(wǎng)的用戶(hù)<b class='flag-5'>界面</b>開(kāi)發(fā)

    cs1237兩個(gè)差分線,正極端電壓大于負(fù)極端,兩者相差越大,讀出來(lái)的數(shù)據(jù)越來(lái)越

    嘗試加上補(bǔ)碼轉(zhuǎn)原碼也是樣,壓差越來(lái)越大,數(shù)值越來(lái)越小,正常不應(yīng)該是越來(lái)越大嗎?
    發(fā)表于 03-30 10:52

    嵌入式會(huì)越來(lái)越卷嗎?

    。隨著嵌入式系統(tǒng)與互聯(lián)網(wǎng)的深度融合,數(shù)據(jù)安全性成為大關(guān)注焦點(diǎn)。從個(gè)人隱私到機(jī)密數(shù)據(jù),嵌入式系統(tǒng)涉及的信息越來(lái)越廣泛,因此,確保數(shù)據(jù)的安全性變得至關(guān)重要。在不斷發(fā)展的網(wǎng)絡(luò)威脅下,保護(hù)嵌入式系統(tǒng)免受惡意
    發(fā)表于 03-18 16:41

    我們?cè)撊绾螒?yīng)對(duì)SOC中越來(lái)越龐大和復(fù)雜的SDC約束?

    SOC設(shè)計(jì)變得越來(lái)越復(fù)雜,成本越來(lái)越高,設(shè)計(jì)和驗(yàn)證也越來(lái)越困難。
    的頭像 發(fā)表于 03-13 14:52 ?1295次閱讀
    我們?cè)撊绾螒?yīng)對(duì)SOC中<b class='flag-5'>越來(lái)越</b>龐大和復(fù)雜的SDC約束?

    IC datasheet為什么越來(lái)越薄了?

    剛畢業(yè)的時(shí)候IC spec動(dòng)則三四百頁(yè)甚至一千頁(yè),這種設(shè)置和使用方法很詳盡,但是這幾年IC datasheet為什么越來(lái)越薄了,還分成了IC功能介紹、code設(shè)置、工廠量產(chǎn)等等規(guī)格書(shū),很多東西都藏著掖著,想了解個(gè)IC什么東西都要發(fā)郵件給供應(yīng)商,大家有知道這事為什么的嗎?
    發(fā)表于 03-06 13:55
    养狗对做生意风水好吗| 百家乐天天乐娱乐场| 大众百家乐娱乐城| 百家乐官网tt娱乐| 百家乐策略| 大发888娱乐场下载地址| 百家乐官网开和几率| 百家乐路有几家| 黑山县| 澳门百家乐赢钱| 博彩交流| 李雷雷百家乐官网的奥妙| 大发888官网充值| 百家乐官网辅助器| 大发888任务| 百家乐官网押注最多是多少| 反赌百家乐的玩法技巧和规则| 百家乐官网破解版下载| 百家乐换房| 洞口县| 百家乐赌博机怎么玩| 金百家乐官网博彩公司| 大世界百家乐娱乐网| 百家乐官网娱乐城优惠| 百家乐中的小路怎样| 最好的百家乐官网娱乐场| 大三巴百家乐的玩法技巧和规则| 百家乐官网的打法技巧| 百家乐斗地主炸金花| 百家乐官网轮盘桌| 威尼斯人娱乐城极好| 百家乐官网官网网站| 大发888娱乐客户端| 百家乐官网押注最多是多少| 德州扑克初级教程| 风水八运24山向吉凶飞星图| 伟德国际博彩| 百家乐赌博技巧网| 脉动棋牌下载| 百家乐注册开户送彩金| 绥中县|