我可以将未指定的类型存储在GtkListStore中吗?

时间:2011-03-12 07:28:54

标签: c++ c gtk

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

2 个答案:

答案 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;
}

我从https://gist.github.com/867930

开始关注此示例