c - 如何获得 GtkCellRenderer 的 GtkTreeViewColumn?

标签 c callback gtk viewmodel

一些 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/

相关文章:

c - Openmp C 编译错误

c - 获取(); C 中的函数不等待第二个循环的输入

c++ - NodeJS - C/C++ 插件通信(stdin stdout)

c - 二维复数 FFT 实现

jquery - 如何停止jquery回调函数?

python - 使用 PyGTK 的右键单击菜单(上下文菜单)

Gtk3标签行间距

java - 为什么当调用带有回调的方法时我没有得到任何输出?

javascript - 从回调中访问对象的属性

compiler-errors - GTK +教程编译错误