2016-09-27 32 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