我可以将未指定的类型存储在GtkListStore中吗?例如,我想存储在一个字段中 - int类型的字段和GdkColor类型的字段?
答案 0 :(得分:1)
我认为你的意思是unions in C C++
答案 1 :(得分:0)
我问它将设置G_TYPE_VALUE类型的字段
#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;
}
开始关注此示例