2016-09-27 66 views
0

我有一個簡單的問題。我正在使用GtkTreeView,其中一列顯示爲GtkCellRendererCombo。用戶可以自由編輯單元格的文本,或者從組合中爲它選擇一個值。編輯GtkCellRendererCombo時捕獲文本

的問題是,一旦用戶從下拉列表選擇一個值,我需要捕獲他之前寫入單元格中的文本。

我不能使用GtkTreeStore對象捕獲文本,因爲該編輯還沒有完成,因此GtkTreeStore是不是最新的。

是否有任何人有什麼建議嗎?

回答

2

如果使用GTK 2,它的工作原理掛接到c​​ellrenderercombo的「編輯 - 開始」信號。然後做一個combobox.get_child(),它返回組合的文本條目。然後,您會將「已更改」信號掛接到文本條目以檢索用戶正在輸入的文本。

如果您正在使用GTK您需要創建自己的自定義單元格渲染器插件3,這樣就可以訪問該條目。我在Python中創建了自己的組合部件,以便在條目中自動填充,但我不確定這是否會對您有所幫助。

+0

感謝您的回答!我已經完全按照你的建議解決了這個問題。 – madmurphy

+0

感謝您接受我的回答。我正在嘗試在StackOverflow上獲得聲望。 :)但是,對於我自己的信息,你能告訴我,如果你去了Gtk 2路線,或者你有自己的自定義單元格渲染器小部件嗎? – theGtknerd

+1

我正在使用GTK3。但是關於GTK2的建議仍然是完全有效的,並且似乎是GTK + 3參考手冊建議的方式:«組合框的其他屬性可以在「編輯開始」信號的處理程序中設置» - 請參閱:https: //developer.gnome.org/gtk3/stable/GtkCellRendererCombo.html#GtkCellRendererCombo.description 因此,在GtkCellRendererCombo的「編輯開始」信號下,我保存了對GtkComboBox子的引用(稍後重用)和將一個信號連接到其GtkEntry對象的「format-entry-text」事件。 – madmurphy