一些 gtk 源代码侦查让我相信以下代码可以获得模型中存储属性的列。
但是,要从信号处理程序到达这一点,我需要获取 GtkCellRenderer
的父 GtkTreeViewColumn
我不知道该怎么做,除了直接传递 treeview 列(这消除了我首先包含需要更新的模型的能力)或传递 GtkTreeView
本身可以让我访问模型,但不能访问 GtkTreeViewColumn
相当复杂的问题。当然,如果有人知道从 GtkCellRenderer
直接到 GtkListStore
的内置 GTK 函数,那就更好了。
void
treeview_combo_edited(GtkCellRendererCombo * widget, gchar * path, gchar * value, GtkListStore * model){
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&iter,path);
// How to get GtkCellRenderer's GtkTreeViewColumn to use in line below?
GSList * attributes = g_object_get(treeviewcolumn,attributes);
int colnumber = g_slist_nth_data(g_slist_position(g_slist_find(attributes,"text")) - 1);
gtk_list_store_set
(
model,
&iter,
colnumber,
value,
-1
);
}
编辑:可能可以直接传递 treeviewcolumn 以获得所需的两个变量,但我在获取单元格渲染器的属性时遇到了问题。我如何获得它们?
最佳答案
是的,这个 API 似乎缺失了。在我的代码中我使用
GtkTreeViewColumn *column = gtk_tree_view_column_new();
GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
g_object_set_qdata_full(G_OBJECT(renderer), g_quark_from_static_string("column"), (gpointer)column, NULL);
然后你可以使用
GtkTreeViewColumn* column = (g_object_get_qdata(G_OBJECT(renderer), g_quark_from_static_string("column"));
从渲染器对象中获取列。
关于c - 如何获得 GtkCellRenderer 的 GtkTreeViewColumn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922284/