首頁>技術>

一、前言

為什麼說QT越來越成為介面程式設計的第一選擇,這要從當初為什麼從MFC轉到QT開始說。若想把MFC開發介面想做得好看一些是十分困難的一件事,引用第三方基於MFC的介面庫程式碼也比較混亂,而當時看到qt有qss樣式設計這麼個功能,就決定試下。然而當專案成功移植到到QT後,真心覺得MFC可以拋棄了,MFC相較於QT缺點實在太多了。並且MFC還有一個致命的缺陷,那就是沒法跨平臺。

至於為什麼不直接使用C# WPF來做介面,如果專案和工具是C#做的,使用C++確實可以和C#互相呼叫,並且也能斷點除錯。但是在效能上還是有不少的損失。這對於我們做音視訊和三維模擬專案是有影響的,所以只能在一些對效能沒有極致要求的專案中使用C#。

二、QT歷史

簡單來介紹一下QT歷史,知道歷史的目的是要藉此判斷使用此庫是否會有風險,是否會突然停止更新,很多開源庫就是沒有做好商業化而最終都是停掉了。

QT由奇趣科技公司開發

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

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

QT的高峰期是在諾基亞智慧手機如日中天的時候,那時候諾基亞塞班系統的手機應用大量都是基於QT研發的,但是隨著蘋果和安卓的流行,塞班無奈退出歷史舞臺。而QT的手機端開發需求也基本被替代。但是QT在嵌入式、電力系統、軍工系統中的應用一直沒有被替代。

三、QT現在使用情況

QT現在被廣泛的應用於嵌入式、電力系統、軍工系統等要與硬體互動的介面系統中,並且大量專業的跨平臺應用軟體也是使用QT開發的。

digia接手QT後開發出了安卓和IOS版本的QT,實現了跨平臺的開發。但目前仍不建議使用QT開發安卓和IOS的應用,兩個平臺坑還是比較多的,但相信會越來越完善。

四、QT提供的工具

QT不僅給我們提供了功能豐富的SDK開發包,而且提供了強大的工具,這也是我們選擇他的原因之一。

1. 基於VS外掛qt-vs-addin

2. Qt助手(手冊)

qt的開發手冊還是比較完備的,而且包含了很多示例的原始碼分析。

3. 基於XML的介面設計器Qt Designer

一款便捷的解碼設計,可以說是C++領域使用最方便的介面設計器。

4. 跨平臺的開發工具 QtCreator

支援跨平臺的C++開發工具,而卻能夠說是在linux上使用最方便的C++開發除錯工具,就算是不用QT庫,也能用它來開發跨平臺的c++專案。

QT框架優勢

1. 工具豐富

QT提供了大量功能齊全的工具。

2. 功能豐富

除了介面庫的使用之外,QT還提供了3d庫,音訊庫,WebEngine,資料庫SDK,網路庫等,使我們做應用變得更簡便。

3. 開源並跨平臺

除了可以通過QT原始碼進行移植之外,QT官方已經提供了關於windows,Android,ios,linux中執行的SDK。

4. 架構的優勢

這部分優勢很多,首先介面原始碼與使用者原始碼的隔離操作,QT的策略是哪怕沒有介面都會生成一個對應的原始碼檔案,每一個介面設計檔案xps.ui都會解析其中的xml生成一個對應的ui_xps.h 檔案,這個檔案你完全不需要修改,如果要呼叫介面中的控制元件直接通過 Ui::XPSClass ui;這個物件定義也是寫在ui_xps.h中。也就是說你的業務邏輯就和介面控制元件物件的建立和設定直接做了隔離。

其次關於事件處理的便捷(靈活的訊號槽機制),QT給使用者提供了訊號槽機制,以至於可以很好的降低耦合,從而提升程式碼的複用性。

5. 及其便捷的樣式設計(像開發web程式一樣設計介面)

使用QT可以很容易的做一個圓角邊框,並且有漸變效果,滑鼠移上去還發生變化,可以參考下面的樣式表,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; /*圓角邊框*/

}

483

Qt

軟體

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • App自動化環境部署,你會搭建了嗎?