我选择 wxWidgets 而不是 Qt 作为图形用户界面框架的一些想法
我以前曾有几年时间用 Delphi 和 VCL 来开发工作和业余项目。
近年来我由于各种原因放弃了 Delphi/BCB,转用 C++ 开发兴趣项目。是的,兴趣而已,我从来没有机会在我的日常工作中使用C++。
当涉及到图形用户界面的项目,我需要一个 C++ GUI 框架。
我选择 C++ GUI 框架的标准:
- 免费。这是必须的。特别是它应该可以免费静态链接。因此,MFC 不在我的名单里了。MFC 不在 VC 的 Express 版本里。
- 开源的。这样我可以阅读代码来学习和调试。闭源库等于是一个黑匣子,我不知道它如何工作,并可能完全失去控制。
- 不错的 GUI 可视化设计工具。 不错意味着,至少我应该可以可视化设计最常用的组件形式(不仅是对话框,也包含顶级窗口)。在我看来,图形用户界面的设计应该可视化。手动编码的图形用户 界面枯燥而且容易出错。我希望我的时间和精力都投入到编写核心逻辑而不是界面上。基于这个标准,很多开源框架就从我的名单中消失了。
- 不错的应用程序大小。一个带有10M的运行时 DLL 的记事本应用程序应该不是一个好主意。对于大项目这可能不是问题。但重要的是我的项目通常是小型或中型的,永远不会非常大。
- 易于安装/配置/构建。在我的印象中(可能错误的),开放源码库很难编译。需要很多的技巧和核心向的改变。我并不想成为某些库的核心,我只想使用开源代码,仅此而已。
- 易于集成到任何常用的编译器和集成开发环境。我的主要的开发环境是 VC 2008 Express,我真的很喜欢它。如果我不得不使用其它 IDE,效率可能会打折。此外,我需要使用 MinGW 的 GCC 来测试 C++ 语法。因此,该框架应至少在VC Express和 GCC 上工作。
- 代码质量要好。我没有期望一个无 bug 的库,但我也不能接受一个满是 bug 的库。
- 文档。我不指望能有 MSDN 那样全面的文档,但一个API文档是必须的。
- 社区支持。每当我有一个问题,我需要一个地方问,而且要在合理时间内得到解答。
- 用户群。一些较为知名的公司应该用该框架开发过应用程序,以此显示该库的可依赖度。
- 跨平台的。这是一个额外要求,但我会很高兴拥有它。
- Unicode支持。另一个额外要求,我很高兴能支持 Unicode。
有了这些标准,我发现只有 wxWidgets 和 Qt 是值得考虑的,因为其他库,如 GTKmm,Ultimate++,VCF,SmartWin,难以满足所有要求。 而且 wxWidgets 和 Qt 都有近20年的发展历史,应该比较成熟。
起初我只尝试了Qt的,因为据我所知,wxWidgets是很类 MFC 风格的,而 Qt 的设计更加高级。我觉得可以把 Qt 当成 VCL 风格。
但经过一段时间,我决定放弃 Qt,因为它有几点不足,
- 太难集成到 VC Express 或 Code::Blocks(一个 IDE 与 GCC 编译器)。对于怎样在 VC Express 上编译 Qt 我实在没有头绪。虽然用 Qt Creator 很容易进行开发,但我不想只局限于任何单一的IDE。我会选择我喜欢的IDE使用。
- 应用程序过大。对于小型应用程序这是不能接受的。
- 过于庞大和臃肿的一个库。一个上G字节的库。一个需要几个小时才能建立的库。这意味着,只要有一个错误修复更新,你需要另外的几个小时时间来重新编译。这不是一个GUI框架,而是一个应用框架,超过了我的需要。
- 非标准C++代码总是不好(即使不坏)的。我真的不喜欢 meta object compiler 的依赖。有很多方法来实现在标准C++信号/槽和RTTI。
在放弃 Qt 之后,我尝试了 wxWidgets,发现我真的很喜欢它,主要体现在几个方面,
- 非常非常轻松地用 VC Express 和 GCC 成功编译。用VC,只需要几分钟的时间创建整个库。GCC 需时较长,需要大约半小时。
- 应用程序大小还是不错的,也不算太小,尤其是在2.9.1,程序要大得多。但总体应用程序大小比 Qt 小很多。
- 库很简洁。它只是一个GUI框架,外加上一些跨平台模块,比如线程,套接字等等。
- 非常好的 GUI 可视化设计工具(Qt 也有)。事实上,在看 API 文档之前我就尝试过 wxFormBuilder。虽然 wxFormBuilder 远远没有 Delphi 好,但我可以说这已经是一个相当不错的 RAD 工具。我可以放置许多常用的控件,改变布局,定义事件处理程序,这就是我需要的 GUI 设计工具。
- 这个库正在向一个很好的方向演化。例如,老的 wxWidgets 因为大量 MFC 风格的事件宏而引来非议,但在最新的2.9.1,一个“bind”功能被引入来使用模板和函数对象作为事件处理程序,这是非常现代的 C++ 风格,我认为比 Qt 的 MOC 好多了。此外,我真的很喜欢这个 ribbon 元件,虽然我还没有测试。
- 良好的社区支持(Qt 也有)。我论坛问了一些问题,都在合理的时间得到答案。
总结:
本文解释了为什么我选择 wxWidgets 而不是 Qt 的原因。仅此而已。我并没有说我更推荐 wxWidgets ,我也没有说 wxWidgets 比 Qt 更好。我只选择了符合我需要的合适的库。如果您正在寻找一个 GUI 库,那么你需要找符合你要求的,因为你可能有不同要求。
本文来源:http://www.cnblogs.com/kbasm/archive/2011/05/04/why-choose-wxwidgets-over-qt.html
转载于:https://blog.51cto.com/2845385/1078020
我选择 wxWidgets 而不是 Qt 作为图形用户界面框架的一些想法相关推荐
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/117660217 长期持续带来更多项目与技术分享,咨询请 ...
- Qt图形视图框架图片图元QGraphicsPixmapItem
文章可能被更新,最新地址:http://www.fearlazy.com/index.php/post/107.html 看这个标题还真有点拗口,一句话里出现了四个图字.这句话的关键词是图片,前面讲了 ...
- Qt 嵌入式图形开发(入门篇)(转)
一.Qt/Embedded 开发环境的安装 一般来说,居于Qt/Embedded开发的应用程序最终会发布到安装有嵌入式Linux操作系统 的小型设备上,所以使用装有Linux操作系统的PC机或者工作站 ...
- Qt修炼手册6_图形:图形视图框架
1.前言 主要为了学习可以在GUI上有效显示或管理大量图形对象的API,以及进行显示.扩大.缩小等操作. 2.图形视图框架(Graphics View Framework) 图形视图框架使用BSP树算 ...
- 【Qt】2D绘图之图形视图框架(一)
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 场景(Scene) 04. 视图(View) 05. 图形项 06. 附录 01. 概述 在前面讲的基本绘图中,我们可以自 ...
- [Qt教程] 第20篇 2D绘图(十)图形视图框架(下)
[Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主 发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社 ...
- [Qt教程] 第19篇 2D绘图(九)图形视图框架(上)
[Qt教程] 第19篇 2D绘图(九)图形视图框架(上) 楼主 发表于 2013-5-4 15:26:20 | 查看: 1798| 回复: 26 图形视图框架(上) 版权声明 导语 在前面讲的基本绘 ...
- qt界面嵌入web_使用Qt WebAssembly而不是JavaScript创建Web用户界面
qt界面嵌入web 当我第一次听说WebAssembly以及使用Qt创建Web用户界面的可能性时(就像在普通C ++中一样),我决定更深入地研究该技术. 我的开源项目Pythonic完全基于Pytho ...
- qml延迟代码_选择C而不是QML将您的代码减少80
qml延迟代码 Many tools rely on web technologies like JavaScript and HTML for mobile app development. But ...
- C++图形用户界面开发框架Qt 6.x入门级教程 - 开发工具简介
Qt旨在一次性开发应用程序和用户界面,然后将它们部署到多个桌面和移动操作系统上. 点击获取Qt下载 Qt Creator Qt Creator 为您提供了在整个应用程序开发生命周期中完成任务的工具,从 ...
最新文章
- 微信公众号可快速创建“门店小程序” 不用开发
- 新会计科目的编号及内容
- 服务器怎么查看性能,查看服务器进程性能查看
- Java中的参数传递 --Java
- 全新思路!阿里达摩院将Transformer引入在线行为检测!ICCV2021
- ORDER BY分类
- 简单网络传递加密数据
- java算法关灯,关灯游戏的算法 js实现
- Leaflet vs. OpenLayers3哪个是更好的JavaScript 地图客户端
- 日志显示格式%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
- 搜索引擎选型调研文档
- js源生实现图片点击弹出放大效果
- 优盘显示分区变0字解决方案
- 人人都是接口开发大师,这个开源项目花5分钟就可以开发一个API接口
- oracle故障分析报告,Oracle 数据库异常宕机错误分析:ORA-01092
- 调试HT57DJ100电机和 TB6600步进电机驱动器,滤波片轮驱动
- postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
- 适合IT领导者的10项IT管理认证
- 电脑开机自动更换壁纸
- ug电脑配置推荐ug电脑需要什么配置ug电脑配置清单