我以前曾有几年时间用 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 库,那么你需要找符合你要求的,因为你可能有不同要求。
分享到:
相关推荐
"一种基于纯矢量的图形用户界面框架"着重于利用矢量图形技术来创建用户界面。矢量图形与传统的像素图形不同,它以数学公式来描述图像,这意味着矢量图形可以无限放大而不失真,非常适合于需要高清晰度和自适应性的...
在IT领域,图形用户界面(GUI,Graphical User Interface)是软件与用户交互的主要方式,它的创建对于初学者来说是一项重要的技能。GUI使得用户能够通过图标、菜单、按钮等直观的元素来操作软件,而非使用复杂的...
图形用户界面是用户与计算机交互的重要部分,以下是一些基于 C++ 的图形用户界面库: * CEGUI:很灵活的跨平台 GUI 库。 * FLTK:快速,轻量级的跨平台的 C++ GUI 工具包。 * GTK+:用于创建图形用户界面的跨平台...
《图形用户界面(GUI)开发与测试》是一本深入探讨GUI设计与测试的资源包,其中包含NXPowerLite软件的相关信息。GUI(图形用户界面)是计算机系统与用户交互的主要方式,它通过图形元素如窗口、按钮、菜单和图标等使...
为了充分使用CodeBlocks进行图形编程,开发者需要熟悉wxWidgets库,该库为CodeBlocks提供了丰富的图形用户界面(GUI)组件。wxWidgets的跨平台能力使得开发者可以利用一套代码库为Windows、Linux和MacOS等操作系统创建...
【图形程式框架接口】是应用程序开发中的核心组成部分,它为开发者提供了一种高效且结构化的途径来构建图形用户界面(GUI)。在GUI应用中,事件和信号处理是至关重要的概念,因为它们构成了用户与应用程序交互的基础...
虽然C语言本身不支持直接创建图形用户界面(GUI),但通过一些第三方库,我们可以实现C语言的图形界面开发。本资源“C语言图形界面开发源程序”显然提供了这样的示例代码,可以帮助开发者了解如何在C语言中构建GUI。...
在本章中,我们将深入探讨如何创建图形用户界面(GUI,Graphical User Interface),这是软件开发中的一个重要领域,尤其在现代计算机应用中占据核心地位。GUI使得用户可以通过图标、菜单、按钮等直观元素与程序进行...
【图形用户界面应用举例】是计算机科学领域中的一个重要主题,主要关注如何通过视觉元素与用户进行交互。在本节中,我们将深入探讨图形用户界面(GUI,Graphical User Interface)的设计原则、常见组件以及其在实际...
在现代计算机系统中,图形用户界面(GUI,Graphical User Interface)已经成为我们与电子设备交互的主要方式。"关于显示屏幕或其部分具有图形用户界面的说明"这一主题深入探讨了如何设计、实现以及优化GUI,使得用户...
3. **编程实现**:实现动画GUI通常需要编程技能,可能涉及到的编程语言有Java、Python、C#、JavaScript等,而库和框架如Qt、wxWidgets、Unity、React Native等也可能被提及。开发者需要了解如何在这些工具中创建和...
【Python图形用户界面设计】 在Python编程中,创建图形用户界面(GUI)是提升用户体验的重要方式。本章节主要探讨如何使用Python实现GUI设计,重点介绍了其中最常用的模块——tkinter。 4.1 图形用户界面概述 ...
它支持C++语言,并且提供了丰富的库来帮助开发者构建图形用户界面(GUI)应用。本项目名为“Qt开发软件数据获取助手”,它结合了Windows SDK,旨在实现类似Spy++的功能,便于开发者调试和分析其他软件的数据流。 ...
在本章节中,我们将深入探讨如何创建图形用户界面(GUI,Graphical User Interface),这是软件开发中的一个重要领域,尤其在现代计算机应用中占据核心地位。GUI使得用户可以通过图标、按钮、菜单等直观元素与程序...
GUI(图形用户界面)是计算机系统与用户交互的主要方式,它通过图标、窗口、菜单、按钮等可视化元素,使得操作更为直观和便捷。GUI用户界面设计是一项涉及美学、心理学、工程学和技术的综合工作,其目标是创建出既...
在本资源中,主题聚焦于使用Python编程语言创建图形用户界面(GUI)以实现自动化办公。GUI是软件应用的一种交互方式,它使用户能够通过视觉元素(如按钮、文本框、菜单等)与程序进行交互,而非直接操作命令行。在...
它不仅提供了丰富的图形用户界面组件,还包含了数据处理、网络通信等多种功能,几乎可以满足开发者的全部需求,被誉为“一站式”服务。与Java不同,C++标准并未包含GUI编程,因此开发者需要选择第三方库,如QT、...
本章一一介绍了这些部件,并举例说明了它们在图形用户界面编程中的应用。 121 \中级篇 第6章 2D绘图 蔡志明本章内容较多,包括Qt的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了Qt 4...