简而言之:对于那些熟悉Qt和Gtk +语言绑定的人。例如。蟒蛇和红宝石。是否有任何质量或能力差异?
更多背景:我非常了解C ++和Qt。 Gtk +的最小经验。我知道由于缺乏定义明确的ABI(应用程序二进制接口),C ++不适合语言绑定。我还读到Gtk +被设计为绑定到其他语言。所以我想知道这在实践中是如何体现的。 Gtk +绑定是否比Qt对应物更好地维护或更好地工作?
我现在对Go语言很感兴趣,他们已经开始开发Gtk +绑定。但是C ++绑定很遥远。这让我想知道学习Gtk +是否值得。
答案 0 :(得分:9)
我在C ++中使用了GTK和Qt,在Python中也使用了PyGTK和PyQt。
Qt击败GTK,它是一个更灵活,更现代,更干净的API。 GTK也缺少一些对我很重要的功能。从框架的角度来看,我推荐Qt。
至于langauge绑定(我只能谈论Python,因为我从未使用过Ruby等价物),我认为PyGTK(使用Glade和类似Padraig Bradys libglade的包装器)使GUI编程非常容易和有趣。但是,如果您可以使用GPL软件(或支付许可费),那么PyQt也是一个不错的选择,虽然不如PyGTK + Glade友好(在GTK中你可以将Glade中的UI定义为单独的XML)文件,所以你可以在不触及代码的情况下调整UI;在Qt中如果你想使用QtDesigner,你必须使用uic生成代码,如果我没记错的话)API本身真的很好用,并且镜像Qt框架干净的设计非常密切。
总而言之,我可能会建议在PyGTK上使用PyQt,但是我可能有偏见,因为我现在更喜欢Qt而不是GTK,尽管你可以尝试两种方式,看看你喜欢哪种方式 - 它们几乎都是微不足道的工作
如果您正在寻找一本关于PyQt的好书,我会推荐Rapid GUI Programming qith Python and Qt。
总结一下:恕我直言Qt在质量和能力上都击败了GTK。虽然PyGTK可以加载Glade xml文件,但PyGTK和PyQt都具有出色的质量和功能,它们反映了底层框架。
答案 1 :(得分:2)
我认为GTK绑定比Qt绑定更早(因此更加成熟),但它们都可以使用,而您之前对Qt的了解应该是您选择的主要因素。
我使用Qt和GTK及其python绑定开发了小型GUI,并发现了两个等效的GUI。有些人对使用Qt容器(QVector,...)的PyQt绑定感到遗憾,这些绑定未转换为常规的python数据结构,从而为代码增加了一些复杂性。我没有回忆起使用PyGTK的相同问题。
答案 2 :(得分:1)
我曾与PyQt和PyGTK合作过,我会说他们都经常与他们的父框架保持联系。然而,这是完全主观的,我发现使用PyGTK比使用PyQt更有价值,即使我以前没有使用GTK编写任何代码。如果你很清楚Qt,那就去Qt吧。
答案 3 :(得分:1)
我一直在尝试围绕Qt的一些组合:RubyQt,JRuby + Jambi,PyQt。第一个很快就会出现各种分段错误。我的Qt技能可能是问题,但所有的seg故障都不是很容易理解。 RubyQt的论坛几乎已经死了,所以不要指望在那里找到太多的信息。
所以我搬到了JRuby + Jambi。这很好用,我在这里和那里达到了一些缺失的功能。另外,我必须为JRuby实现正确的信号/连接。所以,或多或少是一个黑客。没说服力。
最后我转向Python(我不太喜欢)。但是,哇,有什么区别。绑定是最新的,我仍然会遇到一个segmetatio错误,错误消息大部分时间都很明确。所以就我而言,Python + Qt是一个明显的赢家。
请注意,我正在尝试这些组合,以便找到正确的语言/ qt绑定,以便我可以使用我的换相小时(大约每天2小时)创建一个生产准备。因此,我对小而烦恼的问题(如分段错误)的容忍度为0.我还必须在Windows和Linux上进行开发。所以Windows安装是必要的(再一次,Python在这里是一个明显的赢家)。
答案 4 :(得分:0)
有C ++ gtk +绑定。 Google for gtkmm。