c - 区分两个gtktreeviews

标签 c gtk

我需要知道哪个 gtktreeview 从处理程序传递给函数(一个相同的函数用于多个按钮/ TreeView 组合,所以这比制作大量不同的函数更有效)

问题是,一旦函数获得 TreeView 并必须使用它,似乎就没有办法识别它(即使基于像列数这样简单的东西)

void
add_button_clicked(GtkTreeView * treeview,GtkButton * widget){
    GtkTreeIter iter;
    GtkListStore * store = GTK_LIST_STORE(gtk_tree_view_get_model(treeview));
    gtk_list_store_append (store, &iter);

    if(items)
        gtk_list_store_set (store, &iter,
                            ITEM_COL_ENABLED, 1,
                            -1);
    else if(locations)
        gtk_list_store_set (store, &iter,
                            LOCATION_COL_NAME, "Broken Shores",
                            LOCATION_COL_ENABLED, 1,
                            -1);
}

如何区分两者?

最佳答案

您可以将任意数据附加到任何 GObject;这经常被忽视,但它非常适合识别您案例中的 TreeView 。创建 TreeView 时,请执行以下操作:

g_object_set_data(treeview, "id", GINT_TO_POINTER(1));

然后在你的回调中:

if(GPOINTER_TO_INT(g_object_get_data(treeview, "id")) == 1) {
    /* This is tree view #1 */
}

关于c - 区分两个gtktreeviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084946/

相关文章:

c# - C#、C/C++ 或 Objective-C 中的眼动追踪库

c - 为什么可以调用稍后在 C 中声明的函数?

linux - ctags 没有找到所有的 gtk 方法

c - 防止 GTK 应用程序的多个实例

c++ - 如何使用 gtkmm 插入视频

c - 在 Windows 上构建 netcat,在源代码中编辑 argv 参数

c - 自定义 shell 中的标记化参数

C指针在循环中变为NULL

gtk转html

c++ - 无法使用 Cairo 在 Gtk drawing_area 上绘画