我正在编写一个相当大而复杂的数据分析程序,我已经达到了我认为是时候为程序构建GUI的时候了。所以我的问题是:
我应该使用哪种GUI工具包?
我对编码和构建GUI完全陌生,并且非常感谢可以提供的任何指导。它不一定是世界上最简单的工具包,我学得很快。但是,它确实需要能够执行以下操作(如果不是所有这些对于任何给定的工具包都可能是非常基本的,但我认为最好将所有这些放在那里以防万一)。
它必须允许我直接绘制到屏幕上,以便我可以将图形(光谱确实),图形和类似的东西放在用户看到。我需要能够收集他们点击上述光谱的位置信息。我需要能够显示文本并从用户那里获取文本输入。它需要能够生成菜单(你知道文件,编辑等)。如果它有一些内置的小部件用于生成会很方便的表(虽然我可以克服缺乏,如果我可以直接绘制到屏幕)。它需要能够弹出警告,对话框,保存和打开盒子等。这就是它,当我把它们写出来时,大多数这些看起来非常基本,但我不想让GUI部分编码和然后意识到II需要用不同的工具包重写它。
应该注意的是,我用C ++编写了这个程序,并且我不想用C或其他东西编写GUI部分,因此工具包需要支持C ++。
此外,跨平台工具包优于单一平台工具包。但是,如果它必须是单个平台工具包,那么我更希望它适用于Linux。
最后,我非常喜欢将开源工具包改为闭源工具包。
除此之外,我无法想到要添加的任何内容。提前感谢您的时间和答案。
嗯基于答案,我将看看Qt和wxWidgets,看看哪个更吸引我。我可以接受多个答案,但我不能,因为我正在看两件事情,只接受其中一个答案是不公平的,也许在一两周后我就看了工具包并想通了我想要使用它。
答案 0 :(得分:25)
对于C ++,在我看来,Qt是最不令人沮丧且功能最全的工具包。它也是完全跨平台的。请注意,当版本4.5可用时,Qt将在2009年3月的某个时间获得LGPL许可。目前,它仅提供GPL和商业许可版本。
Qt的GUI设计师很好。它有很多实用功能(场景图库,翻译支持,内置Javascript引擎,内置WebKit库)。通过MOC(一种特殊的预编译器),它还为C ++带来了一些运行时绑定功能和内省。
对于您的技术应用,您可能会发现Qwt(http://qwt.sourceforge.net/)提供了您所需要的功能。它建立在Qt之上。
如果你想要没有GUI的实用程序支持(例如网络等),Qt甚至可以使用“无头”。
另一个跨平台C ++选项是wxWidgets,它可以使用,但不能与Qt真正比较。它是一个低级别的工具包,并不是那么容易使用或完全舍入。 Gtkmm是另一种选择,本着GTK +的精神。
答案 1 :(得分:20)
答案 2 :(得分:6)
我看到没有人对GTKmm发表评论。它是GTK +的C ++版本,使用它真的很愉快。我也使用过Qt,但我不喜欢凌乱的信号/连接代码,moc_XXX生成的文件等.GTKmm有信号等,但不是那个预处理步骤,以及几乎所有的Qt工具包都可以提供图形竞技场。
答案 3 :(得分:4)
我想说这取决于您是否想要针对您的应用程序定位的操作系统的原生外观。 Qt,如前所述,可能是最容易使用的跨平台工具包,但它是自己的小部件集。你没有得到原生的应用程序外观&感觉除非您碰巧在KDE上运行。
我在工作中使用wxWidgets。它有时令人沮丧,在某些地方不是很精致,但它确实为您所针对的平台提供了原生的外观和感觉。它实际上包装了本机UI控件,以便在wxWidgets移植到的所有平台上为它们提供通用API。
答案 4 :(得分:4)
我有同样的问题并搜索了很好的GUI工具包。
最后我发现GUI工具包还不够 - 我需要一个完全独立于平台的解决方案,为我提供构建环境,IDE集成以及网络套接字和文件I / O等低级功能。
我的结果?近9年来,我使用Qt(但仅限于GUI的第一年) - 现在我拥有高度复杂的网络应用程序,具有负载平衡,大规模多线程和图像处理。
您可以将Qt用作具有专业支持的商业用户(像我一样),或者只使用GPL开发您自己的项目,使用LGPL开放自己的项目(允许商业用途)。
其他替代方案,如wxWidgets和GTK ++,是GUI编程的非常好的选择。
但是如果你想要一个记录良好且完整的解决方案,那么Qt就是你的选择。
最诚挚的问候, 3DH
答案 5 :(得分:3)
我还推荐wxWidgets和DialogBlocks,这是一个非常好的可视化GUI构建器。
我会说wxWidgets有一些粗略的边缘,但开发社区非常活跃并且对错误报告/问题/贡献非常敏感。
答案 6 :(得分:1)
答案 7 :(得分:0)
我使用wxWidgets
(工具包)+ wxFormBuilder
(gui-designer)+ eclipse
(ide)。
所有工具都是跨平台且免费的。