20

我正在编写一个相当大且复杂的数据分析程序,并且我认为是时候为该程序构建一个 GUI。所以我的问题是:

我应该使用哪个 GUI 工具包?

我对编码和构建 GUI 完全陌生,希望能提供任何指导。它不一定是世界上最简单的工具包,我学得很快。但是,它确实需要能够执行以下操作(如果不是全部,对于任何给定的工具包来说,其中一些可能是非常基本的,但我认为最好将所有这些都扔掉以防万一)。

它必须允许我直接在屏幕上绘制,以便我可以放置图表(实际上是光谱)、绘图和类似的东西供用户查看。我需要能够收集他们点击上述光谱的位置信息。我需要能够显示文本并从用户那里获取文本输入。它需要能够生成菜单(您知道文件、编辑等)。如果它有一些用于生成表格的内置小部件会很方便(尽管如果我可以直接在屏幕上绘制,我可以克服它的不足)。它需要能够弹出警告、对话框、保存和打开框等。差不多就是这样,当我把它们写出来时,它们中的大部分看起来都很基本,但我不想让 GUI 部分编码和然后意识到我需要用不同的工具包重写它。

应该注意的是,我已经用 C++ 编写了这个程序,并且我不想用 C 或其他东西编写 GUI 部分,因此工具包需要支持 C++。

此外,跨平台工具包比单一平台工具包更可取。但是,如果它必须是一个单一平台工具包,那么我更喜欢它用于 Linux。

最后,我会非常喜欢开源工具包而不是闭源工具包。

除此之外,我想不出有什么要补充的。提前感谢您的时间和回答。

嗯,基于答案,我将同时查看 Qt 和 wxWidgets,看看哪个更吸引我。我可以接受多个答案,但我不能,因为我正在研究两件事,所以只接受一个答案是不公平的,也许在一两个星期后,我查看了工具包并想通了我想用的。

4

8 回答 8

25

对于 C++,在我看来,Qt 是最不令人沮丧且功能最全的工具包。它也是完全跨平台的。请注意,Qt 将在 2009 年 3 月的某个时间获得 LGPL 许可,届时 4.5 版将可用。目前,它仅提供 GPL 和商业许可版本。

Qt 的 GUI 设计器很好。它有很多实用功能(场景图库、翻译支持、内置 Javascript 引擎、内置 WebKit 库)。通过 MOC(一种特殊的预编译器),它还为 C++ 带来了一些运行时绑定功能和自省功能。

对于您的技术应用,您可能会发现 Qwt ( http://qwt.sourceforge.net/ ) 提供了您所需要的。它建立在 Qt 之上。

如果您想要在没有 GUI 的情况下支持实用程序(例如网络等),Qt 甚至可以“无头”使用。

另一个跨平台的 C++ 选项是 wxWidgets,它可以使用,但与 Qt 并没有真正的可比性。它是一个级别低得多的工具包,并且不那么容易使用或完全圆润。Gtkmm 是另一个选项,本着 GTK+ 的精神。

于 2009-02-25T04:53:56.127 回答
20

试试 WxWidgets。跨平台(在 Linux、Mac OS X 和 Windows 上编译)并被广泛接受。

http://www.wxwidgets.org/

也开源!

于 2009-02-25T05:00:05.177 回答
6

我看到没有人评论GTKmm。它是 GTK+ 的 C++ 化身,使用起来非常愉快。我也使用过 Qt,但我不喜欢凌乱的信号/连接代码、moc_XXX 生成的文件等。GTKmm 有信号等,但没有那个预处理步骤,以及几乎所有 Qt 工具包都可以提供图形领域。

于 2009-02-25T08:34:01.590 回答
4

我想说这取决于您是否想要针对您的应用程序的操作系统的本机外观。Qt,如前所述,可能是最容易使用的跨平台工具包,但它是它自己的小部件集。除非您碰巧在 KDE 上运行,否则您不会获得原生应用程序的外观和感觉。

我在工作中使用 wxWidgets。有时它可能会令人沮丧,并且在某些地方不是很精致,但它确实为您所针对的平台提供了原生外观和感觉。它实际上包装了原生 UI 控件,以便在 wxWidgets 移植到的所有平台上为它们提供一个通用 API。

于 2009-02-25T05:04:29.940 回答
4

我有同样的问题,并搜索了好的 GUI 工具包。

最后我发现,一个 GUI 工具包是不够的——我需要一个完整的平台独立解决方案,为我提供构建环境、IDE 集成和网络套接字和文件 I/O 等较低级别的功能。

我的结果?自从我使用 Qt 近 9 年以来(但最初几年只用于 GUI 的东西) - 现在我拥有高度复杂的网络应用程序,具有负载平衡、大规模多线程和图像处理。

您可以将 Qt 用作具有专业支持的商业用户(如我),或者只是在 GPL 和 4.5 与 LGPL(允许商业使用)下开始您自己的项目。

wxWidgets 和 GTK++ 等其他替代方案对于 GUI 编程来说是非常好的选择。

但是,如果您想要一个有据可查且完整的解决方案,那么 Qt 是您的选择。

最好的问候, 3DH

于 2009-02-25T10:46:32.363 回答
3

我还推荐wxWidgetsDialogBlocks,这是一个非常好的可视化 GUI 构建器。

我会说 wxWidgets 有一些粗糙的边缘,但是开发社区非常活跃并且对错误报告/问题/贡献非常敏感。

于 2009-02-25T06:11:28.017 回答
1

qt。您也可以使用基于 Qt 构建的KDE 。

于 2009-02-25T04:54:04.240 回答
1

我使用wxWidgets(工具包)+ wxFormBuilder(gui-designer)+ eclipse(ide)。所有工具都是跨平台且免费的。

于 2011-12-09T07:03:19.057 回答