2010-05-11 68 views
8

簡而言之:對於那些熟悉Qt和Gtk +中的語言綁定的人。例如。蟒蛇和紅寶石。有質量或能力差異嗎?Gtk +與Qt語言綁定

更多背景:我非常瞭解C++和Qt。 Gtk +最小的體驗。我知道由於缺乏明確的ABI(應用程序二進制接口),C++對於語言綁定並不理想。我還讀到,Gtk +被設計爲綁定到其他語言。所以我想知道這在實踐中是如何形成的。 Gtk +綁定是否能夠更好地維護或在某種程度上比他們的Qt對手更好地工作?

我目前對Go語言非常感興趣,他們已經開始開發Gtk +綁定。然而,C++綁定很遙遠。這讓我懷疑學習Gtk +是否值得。

+0

什麼瓦拉[http://live.gnome.org/Vala]?它是一種偉大的新語言(比C++好得多)。它像C#一樣生成本地代碼,它專門用於GTK +開發。 – lepe 2011-12-28 04:44:12

+0

我曾考慮過它,但我的主要興趣在於Go。有一種編碼GUI的方式是第二個問題。 Vala看起來非常像C#/ Java。我會優先採用類似於Gobject之上的Go的新鮮方法。 – 2013-05-13 15:59:57

回答

8

我在C++中使用了GTK和Qt,Python中也使用了PyGTK和PyQt。

Qt擊敗GTK的手 - 它是一個更加靈活,現代和乾淨的API。 GTK也缺乏對我來說很重要的一些功能。從框架的角度來看,我會推薦Qt。我認爲PyGTK(使用Glade和像Padraig Bradys libglade這樣的包裝)使得GUI編程變得非常簡單和有趣。至於語言綁定(我只能說Python,因爲我從來沒有使用過Ruby的等價物)。然而,如果你可以使用GPL軟件(或者支付許可證費用),那麼PyQt也是一個不錯的選擇,雖然不像PyGTK + Glade那麼友好(在GTK中,你可以在Glade中將你的UI定義爲一個單獨的XML文件,所以你可以在不觸及代碼的情況下調整UI;在Qt中,如果你想使用QtDesigner,如果我沒有記錯,你必須使用uic生成代碼),API本身真的非常好用,並且反映了Qt框架的簡潔設計很接近。總的來說,我可能會推薦使用PyQT來代替PyGTK,但是我可能會有偏見,因爲我現在更喜歡Qt而不是GTK,儘管你可以嘗試兩種方法,看看你更喜歡哪一種 - 它們幾乎都是微不足道的加工。

如果您正在尋找一本關於PyQt的好書,我會推薦Rapid GUI Programming qith Python and Qt

總結:恕我直言,Qt在質量和能力上都超過GTK。 PyGTK和PyQt都具有出色的質量和能力,可以反映底層框架,儘管PyGTK可以加載Glade xml文件。

+0

感謝:-)其實Qt的已允許您你的Qt Designer文件保存爲XML,現在直接加載它們在一段時間內輸入。我正在閱讀Gtk + Model-View-Controller的東西。 GtkTreeView等。到目前爲止,我認爲設計看起來比Qt的解決方案更好。但我沒有真正使用它,所以我可能是錯的。對此有何評論? Qt中有哪些特定區域比Gtk更易於使用?例如。佈局,信號插槽系統,創建新的小部件還是僅僅是C++比C更容易使用的事實? – 2010-05-12 08:18:20

+0

有趣的是,當我剛纔查找它時,我沒有找到任何東西。我喜歡Qts信號插槽機制,它非常靈活且易於使用;我真的很喜歡Qt的圖形視圖系統,而不是GTK等價物,我發現Qt控件集更加完整和功能豐富(例如沒有笨拙的擴展,GTK不支持可停靠的窗口)。我做了我的大部分在C++現在的工作,我覺得很方便和容易的(不是很容易,因爲Python,但足夠接近,我會高興地寫Qt代碼在C++中,尤其是繪製代碼,而不必擔心代碼的複雜性) – Dan 2010-05-12 16:37:12

+0

好,有趣。我沒有想到Qt的所有其他API,比如graphicsview。這確實相當不錯。我看着GtkComboBox和GtkTreeView,看起來比QComboBox和QTreeView設計的更好。更容易將小部件放入列並定義模型。笨重的擴展是什麼意思?其他基於GObject的API如Clutter等? – 2010-05-13 14:35:59

0

有C++ gtk +綁定。 Google for gtkmm。

+0

我知道。我不問他們是否存在。但其質量 – 2010-05-11 15:38:04

1

我已經與PyQt和PyGTK一起工作,我會說他們都經常被修補並與他們的父框架同步。但是,這完全是主觀的,我發現使用PyGTK比使用PyQt更有價值,即使我之前沒有使用GTK編寫任何代碼。如果你熟悉Qt,儘管與Qt一起。

2

我認爲GTK綁定比Qt更老(並且更成熟一些),但它們都可用,而且您以前的Qt知識應該是您選擇的主要因素。

我開發了使用Qt和GTK以及它們的python綁定的小GUI,並找到了兩個等價的東西。儘管在QQ容器(QVector,...)的PyQt綁定中有一些遺憾,它們沒有被轉換成常規的Python數據結構,因此增加了一些代碼的複雜性。我沒有回想起使用PyGTK的相同問題。

+0

的QVariant,和其他噪聲是不需要的,如果你使用的PyQt與python3 – pihentagy 2010-06-02 15:19:16

1

我一直在圍繞Qt嘗試幾種組合:RubyQt,JRuby + Jambi,PyQt。第一個快速結束於各種分段錯誤。我的Qt技能可能是問題,但所有seg故障都不太可讀。RubyQt的論壇幾乎已經死了,所以不要期望在那裏找到很多信息。

所以我搬到了JRuby的佔碑+。這工作到很好,我在這裏和那裏到達了一些失蹤的功能。另外,我必須爲JRuby實施適當的信號/連接。所以,或多或少是一個黑客。沒有說服力。

最後,我感動到Python(至極,我不很喜歡)。但是,哦,有什麼不同。綁定是最新的,我仍然可以確定一個segmetatio錯誤,錯誤消息大部分時間是非常解釋性的。所以就我而言,Python + Qt是一個明顯的贏家。

請注意,我是爲了嘗試這些組合找到一個合適的語言/ QT綁定,這樣我可以創造一個生產準備與我的換向時間(大約每天2小時)。所以,我對容易出現的小問題,例如分段錯誤,我只能在Windows和Linux上開發。所以Windows安裝是必要的(再一次,Python在這裏是一個明顯的贏家)。