Gtkmm用于桌面应用程序。

3

使用gtkmm图形用户界面工具包来开发桌面客户端应用程序是一个好主意吗?

这个工具包稳定吗?是否有足够的在线文档可供参考?


3个回答

3

我使用gtkmm编写专业的应用程序,而且可以将其用于真实的软件开发。

但我也使用了 C/GTK+和C++/Qt,我的观点是,使用Gtkmm你会感到原始工具包最初是为C语言设计的,而将其移植到C++中可以接受,但在许多情况下,你会感到C++的特性并未得到更好地利用。

对比一下:

如果你必须在Gtk和Gtkmm之间进行选择,那么选择Gtkmm,即使你可能会陷入一些文档不完整或支持不够的函数中。最终,你总能找到解决方案(可以检查源代码),而且C++比C好很多。

如果你必须在Gtkmm和Qt之间进行选择,那么选择Qt。两者之间有巨大的差距,不仅在工具包本身上,在编写应用程序时还需要所有其他类的文档和支持。


2
我两个月前开始使用gtkmm。我实际上是移植了一个tcl/tk应用程序,但很难让它正常运行。我找到的唯一有用的文档是https://developer.gnome.org/gtkmm-tutorial/3.4/,但手册中描述的很多内容都无法正常工作!我在覆盖信号处理程序时遇到了麻烦,本应该可以工作但却没有。也许您可以查看gtkmm-list@gnome.org以了解可能遇到的问题:-)
基于doxygen输入的文档对我来说似乎毫无用处,因为大多数函数都没有描述,参数名称通常对我来说不太清楚。
与tcl/tk相比,界面看起来不一致。有时必须提供文本作为参数,有时必须提供指针,有时必须提供本地值本身。特别是菜单非常“神秘”,带有基于字符串的配置。需要将参数作为文本是非常不方便的!您必须使用ostrstream将参数转换为文本,并且有时必须自己从文本中解析参数以获取实际值。
我决定给gtk+一个机会是因为存在c++接口。我认为这样做会有助于在编译时而不是运行应用程序时获取错误。但是这在gtkmm中并不总是正确的。使用gtkmm,您也可能遇到运行时错误,因为所有字符串参数都将在运行时解析!这使事情容易出错!
也许我会重新开始,给Qt一个机会。但是初步看来,这似乎并不比gtkmm好:-)
编写GUI应用程序仍然是一项非常烦人的工作!

你推荐使用gtk+还是gtkmm? - Yoh0xFF
Gtk+本身是面向对象的C代码,而gtkmm只是C库的包装器。我认为真的没有理由直接使用gtk+。从C编码类派生看起来很丑陋,在C中编写良好的面向对象的代码比在C++中更困难。所以我的建议是使用gtkmm。但有时查看C接口以获取包装代码的含义是有帮助的。 - Klaus
QT有自己的“基础设施”。QT元对象编译器和qmake是为什么我一开始不会使用QT的例子(我曾经写过一个带有系统托盘、选项卡、表格小部件和数据库连接的QT应用程序,那很快就完成了,但我更喜欢C/GTK+来完成同样的项目)。从头开始编写GUI也很有趣,因此您只需要SDL或OpenGL并编写/绘制自己的小部件和事件处理程序。当您遇到小部件或UTF-8(字体)问题或厌倦了重复发明轮子时,您可能想回头看看GTK+或QT。 - pce

1

gtkmm 是 GTK (gtk.org/language-bindings.php) 的官方支持绑定。

"inkscape" 和 "ardour" 是使用 gtkmm 编写的著名应用程序。

官方 GNOME 绑定遵循 GNOME 发布计划,保证 API 稳定性和基于时间的发布。

如果您想使用 C 编写应用程序,请使用 GTK+(和 GLib)。

您可以在 http://www.gtkmm.org/ (https://developer.gnome.org/gtkmm-tutorial/) 找到文档链接。

使用 Glade(以及例如 PyGTK),您可以快速原型化您的应用程序。 使用 Glade 构建 GUI 很容易,生成的 UI 是一个不绑定编程语言的 xml 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接