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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3708

    浏览量

    96765
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76714

原文标题:为什么 qt 成为 c++ 界面编程的第一选择?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨电子携手LVGL PRO推进嵌入式图形用户界面开发

    随着嵌入式设备对用户体验要求的不断提升,图形用户界面(GUI)成为产品开发越来越重要的环。作为目前最流行的开源嵌入式图形库之的LVGL,
    的头像 发表于 11-21 10:23 946次阅读
    瑞萨电子携手LVGL PRO推进嵌入式图形用户<b class='flag-5'>界面</b>开发

    LVGL近期很多人问,那它和Qt哪个好?

    最近拜访做工业控制、智能家居的客户时,常被问到同个问题:嵌入式产品,GUI选LVGL还是Qt? 其实工具选择没有绝对的“好”与“坏”,但选对适配场景的GUI图形用户界面工具,能直接让
    的头像 发表于 09-23 15:54 821次阅读
    LVGL近期很多人问,那它和<b class='flag-5'>Qt</b>哪个好?

    嵌入式工程师为什么要学QT?

    、车载系统和消费电子等领域尤为突出。其跨平台特性、丰富的库和工具、高性能以及强大的GUI支持,让Qt成为嵌入式开发最理想的选择。 嵌入式工程师学习Qt有很多好处。 跨平台支持
    发表于 08-14 15:15

    为什么越来越多的场所选择智能闸口控制系统?它有哪些优势?

    在物流行业快速发展的今天,传统人工闸口已难以满足高效通行的需求。智能闸口控制系统凭借AI、物联网等先进技术,正逐渐成为港口、物流园区、海关等场所的首选方案。那么,智能闸口究竟有哪些优势,让越来越
    的头像 发表于 08-14 10:56 311次阅读

    后摩尔时代:芯片不是越来越凉,而是越来越

    1500W,而在消费领域,旗舰显卡RTX5090也首次引入了液态金属这更高效但成本更高的热界面材料(TIM)。为什么芯片越来越热?它的热从哪里来?芯片内部每个晶体管
    的头像 发表于 07-12 11:19 1178次阅读
    后摩尔时代:芯片不是<b class='flag-5'>越来越</b>凉,而是<b class='flag-5'>越来越</b>烫

    高效开发 | 瑞迅基于瑞芯微系列主板QT移植部署(上)

    在嵌入式开发的浪潮中,RK3568平台以其强劲性能成为诸多领域的宠儿,而QT凭借出色的跨平台特性和丰富功能,是界面开发的利器。将QT5移植到RK3568平台的深度融合,是嵌入式硬件标准
    的头像 发表于 07-11 15:39 800次阅读
    高效开发 | 瑞迅基于瑞芯微系列主板<b class='flag-5'>QT</b>移植部署(上)

    【EASY EAI Orin Nano开发板试用体验】03-安装QT Creator和QT6

    项目名称,选择好目录,第一次使用可以把保存默认配置勾选上。 这步是用来选择是使用qmake来编译还是用cmake来编译,qmake是qt
    发表于 07-07 14:37

    国产地物光谱仪为什么越来越多被科研团队选择

    地物光谱仪为什么越来越多地被科研团队选择?原因并不复杂,但值得细讲。 、性能接近国际主流,满足科研需求 国产地物光谱仪在核心技术上,近年来取得了质的进步: 1. 波段范围齐全 常规科研所需的 350–2500nm全波段 (覆盖
    的头像 发表于 06-10 15:44 429次阅读
    国产地物光谱仪为什么<b class='flag-5'>越来越</b>多被科研团队<b class='flag-5'>选择</b>?

    【技术案例】Qt 环境部署 - Ubuntu 篇

    扩展以及些宏,Qt很容易扩展,并且允许真正的组件编程Qt因其模块化程度高,可重用性好,可以快速上手等特点,成为
    的头像 发表于 04-16 17:17 1445次阅读
    【技术案例】<b class='flag-5'>Qt</b> 环境部署 - Ubuntu 篇

    ElfBoard技术贴|如何在ELF 1开发板上交叉移植Qt

    在嵌入式系统开发领域,针对特定硬件平台进行Qt框架的移植与适配是项关键技术任务。作为业界主流的跨平台应用开发框架,Qt凭借其完善的图形界面支持能力,在嵌入式开发图形
    的头像 发表于 02-24 16:18 1040次阅读
    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 1646次阅读

    Qt Group发布Qt Accelerate,加速数字产品开发进程

    Qt Group近日正式推出了Qt Accelerate,这是款专为快速构建数字应用而设计的解决方案,旨在满足工业制造、移动出行、消费类电子等多个领域的需求。 Qt Accelera
    的头像 发表于 01-13 11:19 930次阅读

    基于QT开发国产主板终端桌面程序 高效、稳定、跨平台的解决方案

    随着国产化进程的加速,越来越多的企业和开发者开始关注国产硬件平台的应用开发。国产主板作为硬件核心,其性能和稳定性已经得到了广泛认可。然而,如何在这些硬件平台上开发高效、稳定的终端桌面程序,成为
    的头像 发表于 01-08 15:34 1447次阅读

    【飞凌嵌入式OK3588J-C开发板体验】OK3588J-C开发板的QT环境安装

    第一篇报告中,我就已经写了,通过输入qmake -v就可以查看到软件中已经安装好qt环境了,但是我们还需要安装QT Creator这个IDE,然后就可以开发了。 安装的方法也很简单,直接输入
    发表于 12-28 18:20

    非科班也能玩转Android应用,体验QT跨平台能力-迅为RK3568开发板

    开发者不需要为每个平台单独编写代码,可以显著减少开发时间和维护成本。同时,Qt 提供了致的用户界面和用户体验,使得应用在不同设备上都能保持良好的表现。 02-开发者的理想选择
    发表于 12-10 14:33