区分两个gtktreeviews

时间:2012-01-31 18:32:00

标签: c gtk

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

问题是,一旦函数获得了树视图并且必须使用它,似乎没有办法识别它(甚至基于像列数一样简单的东西)

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);
}

我如何区分这两者?

1 个答案:

答案 0 :(得分:0)

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

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 */
}