网易首页 > 网易号 > 正文 申请入驻

为什么qt成为c++界面编程的第一选择

0
分享至

一、前言

为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右。当时为什么会从MFC转到QT,主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MFC的界面库代码也是比较混乱,当时主要看到qt有qss样式设计这个功能,决定试下。当项目移植到到QT后,觉得MFC真的是可以抛弃了,MFC相对于QT缺点实在太多。当然MFC还有一个致命的缺陷,没法跨平台。

当然有同学可能说为什么不直接使用C# WPF做界面,我们一些项目和工具确实是用C#做的,C#和C++也确实可以互相调用,并且可以断点调试。但在性能上还是有不少的损失。对于我们做的音视频和三维仿真项目确实有影响,所以只在一些对性能没有极致要求的项目中使用C#。

二、QT历史

说了一些我们项目的情况,再来简单介绍一下QT历史,知道历史的目的是要判断使用此库是否有风险,是否会停止更新,很多开源库没有做好商业化最终都是停掉了。

l QT由奇趣科技公司开发

l 2008 诺基亚从奇趣科技公司收购Qt, 并增加LGPL的授权模式

l 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开发的软件:

1.Autodesk May:阿凡达和功夫熊猫的3D动画制作软件

2.WPS:在wps的目录中的可以看到QT的的dll库

3.金山词霸

4.google earth

5.微软的skype

6.virtualbox(oracle的虚拟机软件)

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

四、QT提供的工具

再看下QT提供了哪些工具,QT不仅提供了功能丰富的SDK开发包,还提供了强大的工具,这也是我们选择他的原因之一。

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

最新版本提供了2013和2015的版本,旧的版本目前用不起来,但现在c++开发基本主流至少vs2013了。

2. Qt助手(手册)

qt的手册还是比较完备,并且包含了很多示例的源码。

3. 基于XML的界面设计器Qt Designer

便捷的解码设计,应该是c++领域最方便的界面设计器。

4. 跨平台的开发工具 QtCreator

跨平台的c++开发工具,应该是在linux上最方便的c++开发调试工具,就算不用QT库,也可以用它来开发跨平台的c++项目。

五、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相关文章,这篇文章主要做简介,后面会分块详细讲解。

更多内容也可以关注我的51cto学院中的视频课程

更多的资料也可以关注我51cto上的视频课程

夏老师的课堂 http://edu.51cto.com/lecturer/12016059.html

C++QT5跨平台界面编程原理和实战大全视频课程

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

本文出自 “夏曹俊” 博客,转载请与作者联系!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
乔欣素颜晒拜年照穿红衣皮肤超白,婚房内景意外泄露太奢华

乔欣素颜晒拜年照穿红衣皮肤超白,婚房内景意外泄露太奢华

日落于西
2026-02-18 19:03:13
王思聪新加坡过年,带懒懒和其他美女一起玩,累到满脸生无可恋

王思聪新加坡过年,带懒懒和其他美女一起玩,累到满脸生无可恋

乐悠悠娱乐
2026-02-18 09:36:18
中日交锋后,高市态度强硬,新加坡措辞变了,日本会长放弃访华

中日交锋后,高市态度强硬,新加坡措辞变了,日本会长放弃访华

比利
2026-02-19 13:27:25
中国收拾日本,西方国家不敢吭声,高市任职当天,特朗普踩上一脚

中国收拾日本,西方国家不敢吭声,高市任职当天,特朗普踩上一脚

娱乐的宅急便
2026-02-19 15:19:57
小镇“临时女儿”10元接单,代探留守父母丨新春走基层

小镇“临时女儿”10元接单,代探留守父母丨新春走基层

大象新闻
2026-02-19 09:20:09
李易峰没人性!给未成年炮友上海买车房,付1500W封口费,嫖资超千万

李易峰没人性!给未成年炮友上海买车房,付1500W封口费,嫖资超千万

八卦王者
2026-02-18 15:52:51
意甲积分榜:国米7分领跑,米兰第2,尤文1分之差位居第5

意甲积分榜:国米7分领跑,米兰第2,尤文1分之差位居第5

懂球帝
2026-02-19 06:01:33
山东一家3口人的年夜饭,发朋友圈火了,网友:太寒酸,不忍看!

山东一家3口人的年夜饭,发朋友圈火了,网友:太寒酸,不忍看!

乐悠悠娱乐
2026-02-17 13:29:23
乌军这波打出国威的反击战,战果已远超俄罗斯的预料

乌军这波打出国威的反击战,战果已远超俄罗斯的预料

起喜电影
2026-02-18 14:05:22
春晚节目单公布:一共3个小品,没有相声!沈腾、马丽不演小品演“贺岁微电影”,宇树科技机器人将表演武术节目!央视记者实探春晚后台

春晚节目单公布:一共3个小品,没有相声!沈腾、马丽不演小品演“贺岁微电影”,宇树科技机器人将表演武术节目!央视记者实探春晚后台

每日经济新闻
2026-02-16 16:08:00
“后坐力”太大,闫学晶再传噩耗,这下她真该考虑如何留住儿媳了

“后坐力”太大,闫学晶再传噩耗,这下她真该考虑如何留住儿媳了

小熊侃史
2026-01-28 07:10:07
字节跳动,刚刚一笔赚了140亿

字节跳动,刚刚一笔赚了140亿

品牌头版
2026-02-18 18:45:21
48年蒋介石得知辽沈战役落败后,立即下令处决谢士炎,这是为何?

48年蒋介石得知辽沈战役落败后,立即下令处决谢士炎,这是为何?

叹为观止易
2026-02-19 13:31:00
尹锡悦因内乱头目罪一审被判无期徒刑

尹锡悦因内乱头目罪一审被判无期徒刑

新华社
2026-02-19 16:06:12
黄金、白银直线拉升!伊朗,大消息!

黄金、白银直线拉升!伊朗,大消息!

证券时报e公司
2026-02-19 16:37:17
撒贝宁将第十次主持央视春晚,家庭变故烦心事多

撒贝宁将第十次主持央视春晚,家庭变故烦心事多

吃青菜长高
2026-02-06 21:23:14
李嘉欣在香港豪宅过春节,染了一头金发穿着喜庆,与丈夫抱狗拜年

李嘉欣在香港豪宅过春节,染了一头金发穿着喜庆,与丈夫抱狗拜年

她时尚丫
2026-02-18 22:58:20
3 月旺运狂飙!3 大生肖彻底翻盘,财运炸裂,贵气藏不住

3 月旺运狂飙!3 大生肖彻底翻盘,财运炸裂,贵气藏不住

人閒情事
2026-02-19 16:13:02
27岁荷兰女王破纪录,拉链一拉全网爆,代言或超百万美元?

27岁荷兰女王破纪录,拉链一拉全网爆,代言或超百万美元?

老吴教育课堂
2026-02-19 04:14:51
花200万补课后续:380分儿子执意补课,母亲重病陪读,曝更痛隐情

花200万补课后续:380分儿子执意补课,母亲重病陪读,曝更痛隐情

观察鉴娱
2026-01-27 09:36:51
2026-02-19 17:00:49
老夏课堂
老夏课堂
老夏课堂的编程技术
22文章数 70关注度
往期回顾 全部

头条要闻

尹锡悦被判无期徒刑 金建希在内乱后骂"因为你全毁了"

头条要闻

尹锡悦被判无期徒刑 金建希在内乱后骂"因为你全毁了"

体育要闻

首金!苏翊鸣唱国歌落泪 自信比1呐喊

娱乐要闻

明星过年百态!黄晓明等现身三亚

财经要闻

面条火腿香菇酱!上市公司这些年请你吃

科技要闻

怒烧45亿,腾讯字节阿里决战春节

汽车要闻

量产甲醇插混 吉利银河星耀6甲醇插混版申报图

态度原创

数码
旅游
艺术
亲子
公开课

数码要闻

内存价格崩了 国内最高降价20%:去华强北市场揭秘实情!

旅游要闻

新华视点|骏马贺新春 年味别样浓

艺术要闻

震惊!安徒生竟是画家,他的田园生活太美了!

亲子要闻

老爸亲萌娃被嫌弃,原因真是太逗了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版