QT上位机开发(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        可能是因为03年上大学的原因,那个时候学习的编译工具主要就是VC6,一个普遍被认为是古老的开发工具。如果要编写界面的话,基本上只有两种方法,要么用原生的Windows API,或者用MFC进行编程。MFC虽然逻辑上复杂很多,但是至少用它可以帮助我们开发出用户需要的软件,不失为一种实用的开发方法。时至今日,MFC早已经不再是VisualStudio的默认安装选项了。如果大家需要使用MFC的话,也不是不可以,需要自己用vs comminity安装工具重新安装一下才行,比方说像截图这样,

        事实上,自己第一次使用QT也是差不多4年前,那个时候因为项目的需要,使用QT开发上位机软件。使用过后,发现QT其实也蛮好用的。除了QT软件包安装、VisualStudio 2017软件安装、QT VS插件安装之外,其他也不需要额外处理其他软件。QT安装不仅方便,它的使用逻辑也非常清楚,基本上就是app + windows的开发方法。这个c# wpf非常相像。

1、哪些人需要QT开发

        QT开发有两个很明显的优点,第一个就是跨平台。因为QT本身已经替我们完成了跨平台的操作,就像java语言帮助我们实现了跨平台一样。如果我们编写的代码中不包含特定平台的API函数,那么依赖于QT实现跨平台是很容易的事情。第二个就是效率。就像c/c++语言虽然本身历史比较长,但是在这么长的时间当中也积累了大量的第三方库代码。这些都是非常宝贵的财富。此外由于c/c++语言可以直接转换成汇编代码,用户自己甚至都可以使用汇编语言进行优化处理,这在其他平台之上都是做不了的。

2、哪些人其实不需要QT开发

        虽然QT开发有很明显的优点,但是并不是所有的人都适合QT开发。比如说,假设我们开发的软件非常简单,而且只是在windows上运行,这个时候说不定用MFC开发更适合呢。还有一种情况,虽然我们开发的功能比较多,但是大部分功能都是系统集成或者是模块整合,对效率部分没有太高的要求,大部分开发人员也不是计算机专业出身,那么这个时候QT未必那么适合用来进行相关软件开发,反而是c# wpf这一类的开发平台非常适合用来进行软件开发。c#第三方库多,语法简单,对效率本身不是那么在意的同学完全可以用c# wpf进行软件开发。我们自己也需要明白,客户很多时候并不care软件是怎么开发出来的,他们关心的是功能是不是满足需求、稳不稳定、价格是不是合理。

3、使用QT是否一定需要精通c++语言

        由于QT本身是基于c++进行开发的平台,很多朋友可能会比较担心,自己的c++能力是否可以胜任QT的开发。其实有这方面担心的朋友完全是多虑了,我们是使用QT来开发软件,而不是开发纯QT软件。其实只要了解基本c++语法,了解构造函数、析构函数、虚函数,了解继承、封装、多态这些基本知识点,不过分使用最新的c++语法标准,那么用c++来开发QT软件完全是可行的。退一步说,等出现问题的时候,及时改正也可以的。程序员本来就是在不停实践、不停试错的操作中进步和成长的。

4、QT的隐形风险

        上面三点,说的都是程序员本身需要注意的地方。那么作为企业来说,如果使用QT作为公司上位机软件开发的主平台,那么有两个隐形风险是需要注意下的。第一,市场上合格的c++程序员不多,而且找到之后,一般用人成本都不低;第二,QT使用还会有一定的版权风险。如果是国内使用,或许这方面的风险还小一点,但是产品一旦出口,一定会涉及到合法、合规的要求,到时候再来进行处理,恐怕会有不小的代价。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/309397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PHP】B/S手术室麻醉信息管理系统源码

手术麻醉临床信息系统全面覆盖从患者入院,经过术前、术中、术后,直至出院的全过程。通过与相关医疗仪器的设备集成,不但可以轻松集成手术室传统监护设备如监护仪、麻醉机、呼吸机,也能与血气分析仪等设备对接,快速获取…

【yolov5驾驶员和摩托车佩戴头盔的检测】

yolov5驾驶员和摩托车佩戴头盔的检测 数据集和模型yolov5驾驶员和摩托车佩戴头盔的检测yolov5驾驶员和摩托车佩戴头盔的检测可视化结果 数据集和模型 数据和模型下载: yolov5摩托车佩戴头盔和驾驶员检测模型 yolov5-6.0-helmat-mortor-1225.zipyolov3摩托车佩戴头…

亚信安慧AntDB数据并行加载工具的实现(二)

3.功能性说明 本节对并行加载工具的部分支持的功能进行简要说明。 1) 支持表类型 并行加载工具支持普通表、分区表。 2) 支持指定导入字段 文件中并不是必须包含表中所有的字段,用户可以指定导入某些字段,但是指定的字段数要和文件中的字段数保持一…

Cisco模拟器-跨交换机实现VLAN

计要求将两台相互连接的交换机上的VLAN号全局使用,技术上可以使用TRUNK技术的数据包标记功能来实现。 通过设计,可以对多台交换机进行整合,提高网络设备的利用率、降低网络工程的成本,同时也可以简化网络配置。 交换机0配置&…

【数据结构】双向带头循环链表的实现

前言:在前面我们学习了顺序表、单向链表,今天我们在单链表的基础上进一步来模拟实现一个带头双向链表。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:数据结构 👈 💯代码仓库:卫卫周大胖的…

力扣算法-Day15

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以…

C# Image Caption

目录 介绍 效果 模型 decoder_fc_nsc.onnx encoder.onnx 项目 代码 下载 C# Image Caption 介绍 地址:https://github.com/ruotianluo/ImageCaptioning.pytorch I decide to sync up this repo and self-critical.pytorch. (The old master is in old ma…

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850 2023/12/29 11:10 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.…

Spring Boot学习随笔- 集成MyBatis-Plus(二)条件查询QueryWrapper、聚合函数的使用、Lambda条件查询

学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 查询方法详解 普通查询 // 根据主键id去查询单个结果的。 Test public void selectById() {User user userMapper.selectById(1739970502337392641L);System.out.print…

JAVA-集合

JAVA-集合 整体结构: Collection collection (以实现子类ArrayList为例:) 存放类型为 Object,根据实现类的不同;其存放的元素可重复可 不重复; 有序或无序 迭代器 Iterator对象即为迭代器…

基于huffman编解码的图像压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Huffman编码算法步骤 4.2 Huffman编码的数学原理 4.3 基于Huffman编解码的图像压缩 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..…

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor 引入 | ProductFlavor 参考文档地址 )

Android Plugin DSL Reference 参考文档 : 文档主页 : Android Plugin 2.3.0 DSL Reference android 模块配置文档 : AppExtension - Android Plugin 2.3.0 DSL Reference ProductFlavor 文档 : ProductFlavor - Android Plugin 2.3.0 DSL Reference 一、ProductFlavor 配置…