0

(これはすべて、既存のTreeModelの使用ではなく、独自のTreeModelの実装の観点から)

独自のTreeModelのC++実装でGtk::TreeModelColumnを使用するにはどうすればよいですか?

私が理解している限り、これは列のタイプを一意に識別する目的を果たしますが、C ++ドメインでこのように使用するにはどうすればよいですか?

任意のGType(TreeModelColumn内の基になるgtkオブジェクト)をC ++タイプに変換する方法はありますか?それでキャストできますか?

そうでなければ-なぜそれがgtkmmに存在するのですか?そこでの本当の目的は何ですか?

4

1 に答える 1

2

独自のTreeModelのC++実装でGtk::TreeModelColumnを使用するにはどうすればよいですか?

私はあなたがそうする必要はないと思いますし、それが意味をなさないと思います。

Gtk :: TreeModel :: Columnは、Gtk :: TreeModelを使用するときに使用するアプリケーション用です: http ://developer.gnome.org/gtkmm-tutorial/unstable/sec-treeview-model.html.en#treeview-model -列

APIでのその目的は、(アプリ開発者として)列のインデックスと列の型を覚える必要がないようにし、その特定の型を使用してオーバーロードされたメソッドを呼び出すことができるようにすることです。

ただし、ListStoreやTreeStoreのようなcreate(TreeModelColumnRecord)を持つ汎用データモデルを作成しようとしている場合は、それらのTreeModelColumn<>が提供されます。その場合、types()を呼び出すことでgtkmmのようにGTypeを取得できます:http: //git.gnome.org/browse/gtkmm/tree/gtk/src/liststore.ccg#n26

そして、TreeModelColumn ::ElementTypeはC++タイプを教えてくれます:http://git.gnome.org/browse/gtkmm/tree/gtk/gtkmm/treemodelcolumn.h#n131 しかし 、実際には、dynamic_cast<>を実行する必要があります。 C++タイプのスイッチをオンにします。物をどのように保管するかについての決定は完全にあなた次第です。しかし、私があなたなら、可能であればListStoreまたはTreeStoreを使用します。

于 2012-10-18T11:27:11.733 に答える