2011-03-12 64 views
0

我可以在GtkListStore中存储未指定的类型吗?例如,我想存储在一个字段中 - int类型的字段和GdkColor类型的字段?我可以在GtkListStore中存储未指定的类型吗?

+1

这个例子中,你可以请你澄清你的问题。 – Algorithmist 2011-03-12 07:56:25

+0

我已经有3个字段的GtkListStore。第一个字段是双重类型的“leftRange”。第二个字段也是双精度类型的“rightRange”。但是3场是“属性”。我想这个字段可以定义为未指定的类型,可以是int类型,GdkColor类型等。你理解我,对不起我的坏英语 – 2011-03-12 08:09:28

回答

0

我问,这将是设置字段

#include <gtk/gtk.h> 

int main (int argc, char * argv[]) 
{ 
    gtk_init(&argc, &argv); 

    GtkListStore* store = gtk_list_store_new(1, G_TYPE_VALUE); 
    GValue v = { 0 }; 
    GtkTreeIter iter; 
    gtk_list_store_append(store, &iter); 
    g_value_init(&v, G_TYPE_INT); 
    g_value_set_int(&v, 10); 
    GValue gv = { 0 }; 
    g_value_init(&gv, G_TYPE_VALUE); 
    g_value_set_boxed(&gv, &v); 
    gtk_list_store_set_value(store, &iter, 0, &gv); 

    GValue gv2 = { 0 }; 
    gtk_tree_model_get_value((GtkTreeModel*)store, &iter, 0, &gv2); 
    printf("gv2 holds %s\n", g_type_name(G_VALUE_TYPE(&gv2))); 
    GValue * gv3 = (GValue*)g_value_get_boxed(&gv2); 
    printf("gv3 holds %s\n", g_type_name(G_VALUE_TYPE(gv3))); 

    int int_v = g_value_get_int(gv3); 
    printf("int_v = %d\n", int_v); 

    return 0; 
} 

的G_TYPE_VALUE类型我都遵循从https://gist.github.com/867930