Qt 是一个著名的 C++ 库——或许并不能说这只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI。使用 Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要研究 STL,不再需要 C++ 的string,因为Qt有它自己的 QString 等等。或许这样说很偏激,但 Qt 确实是一个“伟大的 C++ 库”。

我们所使用的 Qt,确切地说也就是它的 GUI 编程部分。C++ 的 GUI 编程同 Java 不同:GUI 并不是 C++ 标准的一部分。所以,如果使用 Java,那么你最好的选择就是 AWT/Swing,或者也可以使SWT/JFace,但是,C++ 的 GUI 编程给了你更多的选择:wxWidget, gtk++ 以及 Qt。这几个库我都有接触,但是接触都不是很多,只能靠一些资料和自己的一点粗浅的认识说一下它们之间的区别(PS: 更详尽的比较在前面的文章中有)。

wxWidget

首先说 wxWidget,这是一个标准的 C++ 库,和 Qt 一样庞大。它的语法看上去和 MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidget 上面来。wxWidget 有一个很大的优点,就是它的界面都是原生风格的。这是其他的库所不能做到的。wxWidget 的运行效率很高,据说在Windows 平台上比起微软自家的 MFC 也不相上下。

gtk++

gtk++ 其实是一个 C 库,不过由于 C++ 和 C 之间的关系,这点并没有很大的关系。但是,gtk++ 是一个使用 C 语言很优雅的实现了面向对象程序设计的范例。不过,这也同样带来了一个问题——它的里面带有大量的类型转换的宏来模拟多态,并且它的函数名“又臭又长(不过这点我倒是觉得无所谓,因为它的函数名虽然很长,但是同样很清晰)”,使用下划线分割单词,看上去和 Linux 如出一辙。由于它是 C 语言实现,因此它的运行效率当然不在话下。gtk++ 并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系统的界面显得格格不入。

QT

再来看 Qt,和 wxWidget 一样,它也是一个标准的 C++ 库。但是它的语法很类似于 Java 的Swing,十分清晰,而且 SIGNAL/SLOT 机制使得程序看起来很明白——这也是我首先选择 Qt 的一个很重要的方面,因为我是学 Java 出身的 :) 。不过,所谓“成也萧何,败也萧何”,这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 qmake 对程序进行预处理,才能够再使用 make 或者nmake 进行编译。并且它的界面也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙的模拟了本地界面。另外值得一提的是,Qt 不仅仅运行在桌面环境中,Qt 已经被 Nokia 收购,它现在已经会成为Symbian 系列的主要界面技术—— Qt 是能够运行于嵌入式平台的。

以往人们对 Qt 的授权多有诟病。因为 Qt 的商业版本价格不菲,开源版本使用的是 GPL 协议。但是现在 Qt 的开源协议已经变成 LGPL。这意味着,你可以将 Qt 作为一个库连接到一个闭源软件里面。可以说,现在的 Qt 协议的争议已经不存在了——因为 wxWidgets 或者 gtk+ 同样使用的是类似的协议发布的。

在本系列文章中,我们将使用 Qt4 进行 C++ GUI 的开发。我是参照着《C++ GUI Programming with Qt4》一书进行学习的。其实,我也只是初学 Qt4,在这里将这个学习笔记记下来,希望能够方便更多的朋友学习 Qt4。我是一个 Java 程序员,感觉 Qt4 的一些命名规范以及约束同 Java 有异曲同工之妙,因而从 Java 迁移到 Qt4 似乎困难不大。不过,这也主要是因为 Qt4 良好的设计等等。

mfc程序转化为qt_工控编程,Qt 学习之路相关推荐

  1. mfc程序转化为qt_小峰的QT学习笔记

    我的专业是输电线路,上个学期,我们开了一门架空线路设计基础的课,当时有一个大作业是计算线路的比载,临界档距,弧垂最低点和安装曲线.恰逢一门结课考试结束,大作业ddl快到,我和另外两个同专业的室友除了有 ...

  2. mfc程序转化为qt_智慧虎超:小程序如何为珠宝行业助力?低频商品的高频转化你懂吗...

    小程序发展各行各业都通过搭建自己的小程序平台尝到了流量红利带来的甜头,而珠宝作为消费者的低频需求如何才能借着小程序发展的东风让订单蹭蹭蹭往上涨呢? 打造具有品牌辨识度的小程序 小程序的设计要具有品牌的 ...

  3. mfc程序转化为qt_以“企鹅电竞小程序”改版为例,讲解如何将用户核心路径转化为设计语言...

    前言 用户路径是指用户达到目标时一系列的操作.我们可以将用户在产品中由开始到结束的整个过程划分成很多节点,用户从一个节点到另一个节点的过程可以被视为是一条路径.用户路径主要分为两种:一种是用户找寻信息 ...

  4. java qt gui_工控编程,Qt 学习之路

    原标题:工控编程,Qt 学习之路 Qt 是一个著名的 C++ 库--或许并不能说这只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI.使用 Qt,在一定程序上你获得的是一个"一站 ...

  5. lubuntu18.04工控屏QT开发

    lubuntu18.04工控屏QT开发--备忘 系统更新 中文语言包及输入法 QT安装 QWT安装 QT程序的打包和运行 Lubuntu开机自启动脚本程序方法 Lubuntu开机跳过输入密码自动登录 ...

  6. 工控网络安全产品---学习笔记

    工控网络安全产品 常见的工控安全产品分类 防护类产品 审计类产品 终端类产品 检测类产品 管理类产品 工业互联网态势感知(内网运维管理中心) 物联网态势感知(物联网在线监测系) 工控安全实验室 工控安 ...

  7. mfc编程淘汰了吗_工控编程,学完C++基础后再学什么?

    完?那是什么程度?STL用得熟练吗?算法和数据结构掌握得怎么样呢?会写界面吗?BOOST呢? 像楼上所说的换一种语言,简直是痴人说梦,如果不深入一门语言,夸张一点说,就好比你会用很多编程语言写&quo ...

  8. mfc程序转化为qt_10年程序员:我都学过这些语言,2019年开始我再也不是程序员......

    为什么学编程 2008年,高中毕业的我问一个已经工作两年的亲戚:什么专业工资高?他告诉我:程序员.2008年成都最低工资好像是800元,我的生活费也是800元,据他所说程序员出来的工资是2000+,于 ...

  9. 人为什么要努力?编程、学习之路…很迷茫?个人经验分享

    本文主要包含五个内容分别是: 人为什么要努力? 你是否处于迷茫状态? 向前辈询问很羞耻? "为兴趣而战"而不是"为兴趣而不读书" 优秀的人更优秀.相反亦然 人为 ...

最新文章

  1. 一道看完答案你会觉得很沙雕的「动态规划算法题」
  2. jsPlumb之流程图项目总结及实例
  3. c语言用getchar函数输入两个字符c1,c语言:用getchar函数读入两个字符给c1,c2,用putchar和printf输出。思考问题...
  4. Java Review - 并发编程_ConcurrentLinkedQueue原理源码剖析
  5. 队列(常用数据结构之一)
  6. Aspose.cell生成表格
  7. HDU - 1028——母函数入门
  8. 中国数据库OceanBase登顶之路
  9. 小白 C++ 入门到大神发疯学习路线
  10. Nginx限制对代理HTTP资源的访问速率
  11. 【Vue2.0】— 全局事件总线GlobalEventBus(十九)
  12. 加速AI计算生态构建,华为昇腾布道西安开发者
  13. 藏红花怎么推广?百度下拉词|抖音下拉词框|信息流推广-三剑合璧
  14. oracle如何创建基表,创建本地基表的物化视图
  15. mysql 存储过程 长字符串_MySQL存储过程--长字符串扯分
  16. 怎么对linux系统的硬盘检测,详解Linux系统中hdparm硬盘检测工具的使用
  17. AGND为模拟地,DGND为数字地
  18. Extjs Design 可视化开发工具
  19. ​在家共享按摩椅“掘金”共享经济
  20. openssl编程-DH

热门文章

  1. Win7无法安装程序提示Installer integrity check has failed的解决方法
  2. 浅析arm的异常、中断和arm工作模式的联系
  3. Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案
  4. 记一次前端问题解决历程(Cannot read Property ‘call‘ of undefined)
  5. maven的pom.xml用<exclusion>解决版本问题
  6. 异常 java.lang.NumberFormatException: For input string:
  7. 如何从grep -R中排除目录?
  8. Python情感分析:鹿晗的粉丝们究竟原谅他了吗?
  9. oc09--NSString
  10. 巩固一下C语言中的指针