linux QT 结束当前进程_软件特攻队|为什么 Qt 成为 c++ 界面编程的第一选择?
一、前言
為什么說QT越來越成為界面編程的第一選擇,這要從當(dāng)初為什么從MFC轉(zhuǎn)到QT開始說。若想把MFC開發(fā)界面想做得好看一些是十分困難的一件事,引用第三方基于MFC的界面庫(kù)代碼也比較混亂,而當(dāng)時(shí)看到qt有qss樣式設(shè)計(jì)這么個(gè)功能,就決定試下。然而當(dāng)項(xiàng)目成功移植到到QT后,真心覺得MFC可以拋棄了,MFC相較于QT缺點(diǎn)實(shí)在太多了。并且MFC還有一個(gè)致命的缺陷,那就是沒法跨平臺(tái)。
至于為什么不直接使用C# WPF來做界面,如果項(xiàng)目和工具是C#做的,使用C++確實(shí)可以和C#互相調(diào)用,并且也能斷點(diǎn)調(diào)試。但是在性能上還是有不少的損失。這對(duì)于我們做音視頻和三維仿真項(xiàng)目是有影響的,所以只能在一些對(duì)性能沒有極致要求的項(xiàng)目中使用C#。
二、QT歷史
簡(jiǎn)單來介紹一下QT歷史,知道歷史的目的是要借此判斷使用此庫(kù)是否會(huì)有風(fēng)險(xiǎn),是否會(huì)突然停止更新,很多開源庫(kù)就是沒有做好商業(yè)化而最終都是停掉了。
QT由奇趣科技公司開發(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的高峰期是在諾基亞智能手機(jī)如日中天的時(shí)候,那時(shí)候諾基亞塞班系統(tǒng)的手機(jī)應(yīng)用大量都是基于QT研發(fā)的,但是隨著蘋果和安卓的流行,塞班無奈退出歷史舞臺(tái)。而QT的手機(jī)端開發(fā)需求也基本被替代。但是QT在嵌入式、電力系統(tǒng)、軍工系統(tǒng)中的應(yīng)用一直沒有被替代。
三、QT現(xiàn)在使用情況
QT如今被廣泛的應(yīng)用于嵌入式、電力系統(tǒng)、軍工系統(tǒng)等要與硬件交互的界面系統(tǒng)中,并且大量專業(yè)的跨平臺(tái)應(yīng)用軟件也是使用QT開發(fā)的。
digia接手QT后開發(fā)出了安卓和IOS版本的QT,實(shí)現(xiàn)了跨平臺(tái)的開發(fā)。但目前仍不建議使用QT開發(fā)安卓和IOS的應(yīng)用,兩個(gè)平臺(tái)坑還是比較多的,但相信會(huì)越來越完善。
四、QT提供的工具
QT不僅給我們提供了功能豐富的SDK開發(fā)包,而且提供了強(qiáng)大的工具,這也是我們選擇他的原因之一。
1. 基于VS插件qt-vs-addin
2. Qt助手(手冊(cè))
qt的開發(fā)手冊(cè)還是比較完備的,而且包含了很多示例的源碼分析。
3. 基于XML的界面設(shè)計(jì)器Qt Designer
一款便捷的解碼設(shè)計(jì),可以說是C++領(lǐng)域使用最方便的界面設(shè)計(jì)器。
4. 跨平臺(tái)的開發(fā)工具 QtCreator
支持跨平臺(tái)的C++開發(fā)工具,而卻能夠說是在linux上使用最方便的C++開發(fā)調(diào)試工具,就算是不用QT庫(kù),也能用它來開發(fā)跨平臺(tái)的c++項(xiàng)目。
QT框架優(yōu)勢(shì)
1. 工具豐富
QT提供了大量功能齊全的工具。
2. 功能豐富
除了界面庫(kù)的使用之外,QT還提供了3d庫(kù),音頻庫(kù),WebEngine,數(shù)據(jù)庫(kù)SDK,網(wǎng)絡(luò)庫(kù)等,使我們做應(yīng)用變得更簡(jiǎn)便。
3. 開源并跨平臺(tái)
除了可以通過QT源碼進(jìn)行移植之外,QT官方已經(jīng)提供了關(guān)于windows,Android,ios,linux中運(yùn)行的SDK。
4. 架構(gòu)的優(yōu)勢(shì)
這部分優(yōu)勢(shì)很多,首先界面源碼與用戶源碼的隔離操作,QT的策略是哪怕沒有界面都會(huì)生成一個(gè)對(duì)應(yīng)的源碼文件,每一個(gè)界面設(shè)計(jì)文件xps.ui都會(huì)解析其中的xml生成一個(gè)對(duì)應(yīng)的ui_xps.h 文件,這個(gè)文件你完全不需要修改,如果要調(diào)用界面中的控件直接通過 Ui::XPSClass ui;這個(gè)對(duì)象定義也是寫在ui_xps.h中。也就是說你的業(yè)務(wù)邏輯就和界面控件對(duì)象的創(chuàng)建和設(shè)置直接做了隔離。
其次關(guān)于事件處理的便捷(靈活的信號(hào)槽機(jī)制),QT給用戶提供了信號(hào)槽機(jī)制,以至于可以很好的降低耦合,從而提升代碼的復(fù)用性。
5. 及其便捷的樣式設(shè)計(jì)(像開發(fā)web程序一樣設(shè)計(jì)界面)
使用QT可以很容易的做一個(gè)圓角邊框,并且有漸變效果,鼠標(biāo)移上去還發(fā)生變化,可以參考下面的樣式表,qss基本和css類似,包括支持css的選擇器,可以通過類名,對(duì)象名,和父類名稱來設(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; /*圓角邊框*/
}
總結(jié)
以上是生活随笔為你收集整理的linux QT 结束当前进程_软件特攻队|为什么 Qt 成为 c++ 界面编程的第一选择?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDC 称索尼 PS VR2 头显销售表
- 下一篇: 微星推出 380Hz 高刷游戏显示器 G