`
kbasm
  • 浏览: 29400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

我选择 wxWidgets 而不是 Qt 作为图形用户界面框架的一些想法

阅读更多

我以前曾有几年时间用 Delphi 和 VCL 来开发工作和业余项目。
近年来我由于各种原因放弃了 Delphi/BCB,转用 C++ 开发兴趣项目。是的,兴趣而已,我从来没有机会在我的日常工作中使用C++。
当涉及到图形用户界面的项目,我需要一个 C++ GUI 框架。

我选择 C++ GUI 框架的标准:

  1. 免费 。这是必须的。特别是它应该可以免费静态链接。因此,MFC 不在我的名单里了。MFC 不在 VC 的 Express 版本里。

  2. 开源的 。这样我可以阅读代码来学习和调试。闭源库等于是一个黑匣子,我不知道它如何工作,并可能完全失去控制。

  3. 不错的 GUI 可视化设计工具 。不错意味着,至少我应该可以可视化设计最常用的组件形式(不仅是对话框,也包含顶级窗口)。在我看来,图形用户界面的设计应该可视化。手动编码的图形用户界面枯燥而且容易出错。我希望我的时间和精力都投入到编写核心逻辑而不是界面上。基于这个标准,很多开源框架就从我的名单中消失了。

  4. 不错的应用程序大小 。一个带有10M的运行时 DLL 的记事本应用程序应该不是一个好主意。对于大项目这可能不是问题。但重要的是我的项目通常是小型或中型的,永远不会非常大。

  5. 易于安装/配置/构建 。在我的印象中(可能错误的),开放源码库很难编译。需要很多的技巧和核心向的改变。我并不想成为某些库的核心,我只想使用开源代码,仅此而已。

  6. 易于集成到任何常用的编译器和集成开发环境 。我的主要的开发环境是 VC 2008 Express,我真的很喜欢它。如果我不得不使用其它 IDE,效率可能会打折。此外,我需要使用 MinGW 的 GCC 来测试 C++ 语法。因此,该框架应至少在VC Express和 GCC 上工作。

  7. 代码质量要好 。我没有期望一个无 bug 的库,但我也不能接受一个满是 bug 的库。

  8. 文档 。我不指望能有 MSDN 那样全面的文档,但一个API文档是必须的。

  9. 社区支持 。每当我有一个问题,我需要一个地方问,而且要在合理时间内得到解答。

  10. 用户群 。一些较为知名的公司应该用该框架开发过应用程序,以此显示该库的可依赖度。

  11. 跨平台的 。这是一个额外要求,但我会很高兴拥有它。

  12. 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 库,那么你需要找符合你要求的,因为你可能有不同要求。

2
13
分享到:
评论

相关推荐

    一种基于纯矢量的图形用户界面框架.zip

    "一种基于纯矢量的图形用户界面框架"着重于利用矢量图形技术来创建用户界面。矢量图形与传统的像素图形不同,它以数学公式来描述图像,这意味着矢量图形可以无限放大而不失真,非常适合于需要高清晰度和自适应性的...

    图形用户界面的创建

    在IT领域,图形用户界面(GUI,Graphical User Interface)是软件与用户交互的主要方式,它的创建对于初学者来说是一项重要的技能。GUI使得用户能够通过图标、菜单、按钮等直观的元素来操作软件,而非使用复杂的...

    C++资源大全之游戏引擎、图形用户界面

    图形用户界面是用户与计算机交互的重要部分,以下是一些基于 C++ 的图形用户界面库: * CEGUI:很灵活的跨平台 GUI 库。 * FLTK:快速,轻量级的跨平台的 C++ GUI 工具包。 * GTK+:用于创建图形用户界面的跨平台...

    图形用户界面(GUI)开发与测试 (NXPowerLite).rar

    《图形用户界面(GUI)开发与测试》是一本深入探讨GUI设计与测试的资源包,其中包含NXPowerLite软件的相关信息。GUI(图形用户界面)是计算机系统与用户交互的主要方式,它通过图形元素如窗口、按钮、菜单和图标等使...

    图形程式框架接口

    【图形程式框架接口】是应用程序开发中的核心组成部分,它为开发者提供了一种高效且结构化的途径来构建图形用户界面(GUI)。在GUI应用中,事件和信号处理是至关重要的概念,因为它们构成了用户与应用程序交互的基础...

    C语言图形界面开发源程序

    虽然C语言本身不支持直接创建图形用户界面(GUI),但通过一些第三方库,我们可以实现C语言的图形界面开发。本资源“C语言图形界面开发源程序”显然提供了这样的示例代码,可以帮助开发者了解如何在C语言中构建GUI。...

    第14章 创建图形用户界面GUI.ppt7.zip.zip

    在本章中,我们将深入探讨如何创建图形用户界面(GUI,Graphical User Interface),这是软件开发中的一个重要领域,尤其在现代计算机应用中占据核心地位。GUI使得用户可以通过图标、菜单、按钮等直观元素与程序进行...

    8.6 图形用户界面应用举例(ppt).zip

    【图形用户界面应用举例】是计算机科学领域中的一个重要主题,主要关注如何通过视觉元素与用户进行交互。在本节中,我们将深入探讨图形用户界面(GUI,Graphical User Interface)的设计原则、常见组件以及其在实际...

    关于显示屏幕或其部分具有图形用户界面的说明.rar

    在现代计算机系统中,图形用户界面(GUI,Graphical User Interface)已经成为我们与电子设备交互的主要方式。"关于显示屏幕或其部分具有图形用户界面的说明"这一主题深入探讨了如何设计、实现以及优化GUI,使得用户...

    关于带有动画图形用户界面的显示面板的介绍说明.rar

    3. **编程实现**:实现动画GUI通常需要编程技能,可能涉及到的编程语言有Java、Python、C#、JavaScript等,而库和框架如Qt、wxWidgets、Unity、React Native等也可能被提及。开发者需要了解如何在这些工具中创建和...

    Python程序设计案例教程-第-4-章-图形用户界面设计.pptx

    【Python图形用户界面设计】 在Python编程中,创建图形用户界面(GUI)是提升用户体验的重要方式。本章节主要探讨如何使用Python实现GUI设计,重点介绍了其中最常用的模块——tkinter。 4.1 图形用户界面概述 ...

    Qt开发软件数据获取助手源码

    它支持C++语言,并且提供了丰富的库来帮助开发者构建图形用户界面(GUI)应用。本项目名为“Qt开发软件数据获取助手”,它结合了Windows SDK,旨在实现类似Spy++的功能,便于开发者调试和分析其他软件的数据流。 ...

    第14章 创建图形用户界面GUI9.zip.zip

    在本章节中,我们将深入探讨如何创建图形用户界面(GUI,Graphical User Interface),这是软件开发中的一个重要领域,尤其在现代计算机应用中占据核心地位。GUI使得用户可以通过图标、按钮、菜单等直观元素与程序...

    codeblocks下图形编程起步

    为了充分使用CodeBlocks进行图形编程,开发者需要熟悉wxWidgets库,该库为CodeBlocks提供了丰富的图形用户界面(GUI)组件。wxWidgets的跨平台能力使得开发者可以利用一套代码库为Windows、Linux和MacOS等操作系统创建...

    GUI用户界面设计

    GUI(图形用户界面)是计算机系统与用户交互的主要方式,它通过图标、窗口、菜单、按钮等可视化元素,使得操作更为直观和便捷。GUI用户界面设计是一项涉及美学、心理学、工程学和技术的综合工作,其目标是创建出既...

    Python源码自动办公-32 Python制作图形用户界面(GUI)让操作可视化.rar

    在本资源中,主题聚焦于使用Python编程语言创建图形用户界面(GUI)以实现自动化办公。GUI是软件应用的一种交互方式,它使用户能够通过视觉元素(如按钮、文本框、菜单等)与程序进行交互,而非直接操作命令行。在...

    QT学习之路(入门指导)

    它不仅提供了丰富的图形用户界面组件,还包含了数据处理、网络通信等多种功能,几乎可以满足开发者的全部需求,被誉为“一站式”服务。与Java不同,C++标准并未包含GUI编程,因此开发者需要选择第三方库,如QT、...

    精通qt4编程(源代码)

    本章一一介绍了这些部件,并举例说明了它们在图形用户界面编程中的应用。 121 \中级篇 第6章 2D绘图 蔡志明本章内容较多,包括Qt的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了Qt 4...

Global site tag (gtag.js) - Google Analytics