在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么現在QT越來越成為界面編程的第一選擇?

strongerHuang ? 來源:老夏課堂 ? 作者:夏曹俊 ? 2021-05-08 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Qt可以說是UI界的經典,今天為大家分享一篇關于Qt的內容。

1

前言為什么現在QT越來越成為界面編程的第一選擇,筆者從事qt界面編程已經有接近8年,在這之前我做C++界面都是基于MFC,也做過5年左右。

當時為什么會從MFC轉到QT?主要原因是MFC開發界面想做得好看一些十分困難,引用第三方基于MFC的界面庫代碼也是比較混亂,當時主要看到qt有qss樣式設計這個功能,決定試下。當項目移植到到QT后,覺得MFC真的是可以拋棄了,MFC相對于QT缺點實在太多。當然MFC還有一個致命的缺陷,沒法跨平臺。

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

2

Qt歷史

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

QT由奇趣科技公司開發

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

2011 芬蘭的Digia從Nokia收購了Qt的商業版權,從此Nokia負責Qt on Mobile, Qt Commercial由Digia負責

QT的開發的最高峰是在諾基亞智能手機如日中天的時候,那時候諾基亞塞班系統的手機應用大量都是基于QT,隨著蘋果和安卓的流行,塞班退出歷史舞臺。

qt的手機端開發需求也基本被替代。但QT在嵌入式電力系統、軍工系統中應用一直沒有被替代。

3

QT現在使用情況

了解一下他現在的情況,主要考慮應用場景是否多,就業是否廣,人才是否好招聘。QT被廣泛應用于嵌入式、電力系統、軍工系統等要與硬件交互的界面系統中,并且大量的專業的跨平臺應用軟件也是使用QT開發。

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

我們列出QT開發的軟件:

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

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

3. 金山詞霸

4. google earth

5. 微軟的skype

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

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

4

QT提供的工具

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

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

2. Qt助手(手冊)

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

3. 基于XML的界面設計器Qt Designer

便捷的解碼設計,應該是c++領域最方便的界面設計器。

4. 跨平臺的開發工具 QtCreator

跨平臺的c++開發工具,應該是在linux上最方便的c++開發調試工具,就算不用QT庫,也可以用它來開發跨平臺的c++項目。

5

QT框架優勢最后我們看下QT有哪些具體優勢1. 工具豐富這個前面已經對它的工具做了介紹。

2. 功能豐富出了提供了界面庫之外,還提供了音頻庫,3d庫,數據庫SDK,WebEngine,網絡庫等,讓我們做跨平臺程序變得簡便。

3. 開源并跨平臺 出了可以自己通過QT源碼進行移植之外,qt官方就已經提供了再windows,Android,ios,linux中運行的SDK。

4. 架構的優勢這部分優勢很多,我們列出一些示例,可以看出它的優勢。界面源碼與用戶源碼的隔離,qt的策略是沒有界面都會生成一個對應的源碼,比如有一個界面設計文件xps.ui 它會解析其中的xml生成一個對應了ui_xps.h 文件,這個文件你不需要修改,如果要調用界面中的控件直接通過 Ui::XPSClass ui; 這個對象定義也是寫在ui_xps.h中。也就是你的業務邏輯就和界面控件對象的創建和設置做了隔離。

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

例如有這樣一個需求,我的一個XMov類專門處理視頻,但要把處理進度告知外部界面XSlider的對象,我處理方法,可以XMov提供接口給外部獲取進度,或者是主動調用外部接口來刷新顯示進度,第一種方法實時性得不到保障,并且界面端程序也需要引入XMov類頭文件,也就是做了關聯。

第二種方法使得XMov類的耦合性加大,當界面發生變化是XMov類需要修改。QT中了信號槽機制可以讓兩個類XMov和XSlider關聯起來,在XMov中直接定義一個信號函數void SetPos(int),直接綁定到XSlider對象的void SetPos(int) 槽函數,二者互相都不知道,降低耦合性。只在統一的入口類中將各個模塊直接的信號槽關聯起來。

XMov::run(){ while(!sExit) { //處理視頻 int pos = DealMove(); //發出信號,信號如果沒有綁定,這步調用也不會出問題 SetPos(pos); }}//綁定方法connect(xmov,SIGNAL(SetPos(int)),xslider,SLOT(SetPos(int)))

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

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

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 鼠標懸停*/{ 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; /*圓角邊框*/}

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

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3688

    瀏覽量

    95138
  • C++
    C++
    +關注

    關注

    22

    文章

    2119

    瀏覽量

    75168

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

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    國產地物光譜儀為什么越來越多被科研團隊選擇

    地物光譜儀為什么越來越多地被科研團隊選擇?原因并不復雜,但值得細講。 、性能接近國際主流,滿足科研需求 國產地物光譜儀在核心技術上,近年來取得了質的進步: 1. 波段范圍齊全 常規科研所需的 350–2500nm全波段 (覆蓋
    的頭像 發表于 06-10 15:44 ?159次閱讀
    國產地物光譜儀為什么<b class='flag-5'>越來越</b>多被科研團隊<b class='flag-5'>選擇</b>?

    【技術案例】Qt 環境部署 - Ubuntu 篇

    擴展以及些宏,Qt很容易擴展,并且允許真正的組件編程Qt因其模塊化程度高,可重用性好,可以快速上手等特點,成為
    的頭像 發表于 04-16 17:17 ?459次閱讀
    【技術案例】<b class='flag-5'>Qt</b> 環境部署 - Ubuntu 篇

    ElfBoard技術貼|如何在ELF 1開發板上交叉移植Qt

    在嵌入式系統開發領域,針對特定硬件平臺進行Qt框架的移植與適配是項關鍵技術任務。作為業界主流的跨平臺應用開發框架,Qt憑借其完善的圖形界面支持能力,在嵌入式開發圖形
    的頭像 發表于 02-24 16:18 ?601次閱讀
    ElfBoard技術貼|如何在ELF 1開發板上交叉移植<b class='flag-5'>Qt</b>

    Qt Group發布Qt AI Assistant,助力跨平臺UI開發

    為了進步提升跨平臺用戶界面(UI)開發的效率與便捷性,Qt Group近日推出了款實驗性工具——Qt AI Assistant。這款工具
    的頭像 發表于 02-07 13:47 ?1099次閱讀

    基于QT開發國產主板終端桌面程序 高效、穩定、跨平臺的解決方案

    隨著國產化進程的加速,越來越多的企業和開發者開始關注國產硬件平臺的應用開發。國產主板作為硬件核心,其性能和穩定性已經得到了廣泛認可。然而,如何在這些硬件平臺上開發高效、穩定的終端桌面程序,成為
    的頭像 發表于 01-08 15:34 ?831次閱讀

    【飛凌嵌入式OK3588J-C開發板體驗】OK3588J-C開發板的QT環境安裝

    第一篇報告中,我就已經寫了,通過輸入qmake -v就可以查看到軟件中已經安裝好qt環境了,但是我們還需要安裝QT Creator這個IDE,然后就可以開發了。 安裝的方法也很簡單,直接輸入
    發表于 12-28 18:20

    把YOLOv11和Python Qt做個用戶界面程序

    早些時間,小編想把PID控制器優化部分通過Py Qt來實現用戶界面化,不過看著窗口堆參數,有點發怵:這玩意誰用啊? 參考《PID控制器參數自動優化示例和比較》 后來就擱置了。 在通過Python
    的頭像 發表于 11-28 10:18 ?1585次閱讀
    把YOLOv11和Python <b class='flag-5'>Qt</b>做個用戶<b class='flag-5'>界面</b>程序

    基于全志T113-i的系統快速啟動顯示Qt界面、LVGL界面案例

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

    如何選擇適合自己的編程語言

    在當今這個技術日新月異的時代,編程語言的選擇對于軟件開發者來說至關重要。不同的編程語言有著不同的優勢和適用場景,因此,選擇合適的編程語言不僅
    的頭像 發表于 11-15 09:37 ?1901次閱讀

    LM324調零調好后,改變輸入的時候,輸出的偏差越來越大,怎么解決?

    調零調好后,改變輸入的時候,輸出的偏差越來越大,不知道如何調整,望大神指導!
    發表于 08-28 06:51

    【龍芯2K0300蜂鳥板試用】+6.QT體驗

    1. QT Qt個跨平臺的 C++開發庫。主要用來開發圖形用戶界面(Graphical User Interface,簡稱 GUI)程序。Qt
    發表于 08-21 22:20

    嵌入式QT常見開發方式有哪些?

    提供的豐富組件如按鈕、文本框、窗口等構建傳統的桌面應用風格界面。對于嵌入式設備上的復雜用戶界面或者需要高性能響應的應用,Qt Widgets是個較為常用的
    發表于 08-12 10:05

    我們的城市為什么越來越熱?

    下火辣辣的,大家定會抱怨太陽太猛。但你知道嗎?上海的夏天越來越熱不能怪太陽,大城市自身散發的熱量可以高達來自太陽輻射熱量的五分之二。城市中心氣溫般比周圍郊區高1℃左
    的頭像 發表于 08-03 08:14 ?960次閱讀
    我們的城市為什么<b class='flag-5'>越來越</b>熱?

    EtherCAT運動控制器上位機之Python+Qt):鏈接與單軸運動

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

    QT5+OpenCV4搭建應用開發環境

    作為深度學習算法工程師,必須要掌握應用開發技能嗎?搞工程肯定是必須要會界面開發,QT就是個很不錯的選擇。本文以QT5.15 + OpenC
    的頭像 發表于 07-23 11:23 ?1455次閱讀
    <b class='flag-5'>QT</b>5+OpenCV4搭建應用開發環境
    主站蜘蛛池模板: 91华人在线视频 | 成人午夜网址 | 欧美67194| 一级特黄aa大片免费 | 国产成人精品怡红院 | 天天操91 | 99久久免费午夜国产精品 | 最刺激黄a大片免费网站 | 国产精品免费视频拍拍拍 | 波多野结衣在线免费视频 | 狂野欧美性猛交xxxx免费 | 最新天堂| 狠狠色丁香久久综合网 | 午夜毛片在线观看 | 亚洲国产成人久久一区久久 | 永久免费观看视频 | 手机看片国产福利 | 天天射狠狠干 | 亚洲国产成人va在线观看 | 婷婷色影院| 又粗又硬又猛又黄的免费视频黑人 | 国产黄色在线网站 | 色妹子综合 | 三级理论在线 | 看日本黄色大片 | videosgratis乱色欧美野外 | 激情五月综合综合久久69 | 久久99久久精品国产99热 | 久久婷人人澡人人爽 | 国产免费好大好硬视频 | 青青热久久国产久精品秒播 | 婷婷婷色| 新版天堂资源中文在线 | 国产午夜在线观看 | 亚洲涩综合| 老汉影视永久免费视频 | 日韩精品毛片 | 亚洲 另类 在线 欧美 制服 | 边做饭边被躁欧美三级小说 | 免费一级特黄特色大片在线观看 | 丁香九月婷婷 |