gtkmm: dynamisches TreeModel
-
Ich möchte eine Anzahl Spalten im TreeModel und TreeView dynamisch erweitern.
Die wesentlichen Codezeilen sind so:
Gtk::TreeModelColumn<bool>* pModelColumn;
pModelColumn = new Gtk::TreeModelColumn<bool>;
m_MyColumnRecord.add( *pModelColumn );
m_TreeView.append_column_editable(label , *pModelColumn );Die Spalte ist dann nicht editierbar und ich bekomme folgende Fehlermeldung in der Console:
== schnipp ==
(myFileWidget.exe:3816): Gtk-CRITICAL **: gtk_tree_store_get_value: assertion `column < tree_store->n_columns' failed(myFileWidget.exe:3816): GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE (value)' failed
== schnapp ==Was könnte daran falsch sein?
Ich benutze das Tutorial auf www.gtkmm.org, arbeite mit Visual Studio 2005 ohne Glade
-
Leider, leider geht das nicht. Das ListStore muss, bevor überhaupt Daten da sind, wissen wie dieTypen sind und die Anzahl der Spalten. Daher auch folgende Fehlermeldung:
column < tree_store->n_columns
tree_store->n_columns ist die Anzahl die sich ListStore am Anfang gemerkt hat. Die neue Spalte hat plötzlich eine höhere Nummer.
ListStore müsste sich erweitern, doch soweit ich weiß kann es das nicht. Du kannst das Problem folgender maßen lösen:
Jedes mal ein neues ListStore erstellen, von dem du die alten Werte kopierst oder du leitest eine Klasse von Gtk::TreeModel ab und kümmerst dich selber um die Verwaltung der Daten.