2

Gtkmm 3 の使い方がわからないことがあります。

次のように宣言したカスタム ビジネス タイプがあります。

enum class Eurocents : int {};

この型をas モデルGtk::TreeViewを持つにレンダリングしたいと思います。Gtk::ListStoreを宣言しGtk::TreeModelColumn<Eurocents>、モデルに追加します。次に、append_columnこのモデル コラムにGtk::TreeView適切なタイトルを付けます。

次にappend_rowモデルに移動し、列に対応する値を に設定します(Eurocents)100

私が得る結果は、セルが空で表示されるということです。当然のことながら、Gtkmm が私の任意の型をレンダリングする方法を知っているとは思わないからです。

タイプをレンダリングする方法について Gtkmm に指示したいと思います。

Glib::ustringGlib のような型を表示する方法と、表示用の書式設定が可能であることは既に知っていますGlib::ustringが、それは質問の対象ではありません。

このような任意の型を表示できる列をコーディングすることは可能ですか? もしそうなら、どのように?並べ替えを機能させるには何が必要ですか?

4

1 に答える 1

3

最も一般的で簡単な方法は、cell_data_func コールバックを使用することです。たとえば、Gtk::TreeView::Column (ビュー列) の独自のインスタンスを作成し、セル レンダラー (またはそれ以上) を Gtk::TreeView::Column にパックし、Gtk::TreeView:: を追加できます。 Gtk::TreeView::append_column() で TreeView に列を追加し、Gtk::TreeView::Column() で set_cell_data_func() を呼び出します: https://developer.gnome.org/gtkmm/stable/classGtk_1_1TreeViewColumn.html# a3469e1adf42e5932ea123ec33e4ce4e1

次に、コールバックでモデルから値を取得し、レンダラーのプロパティの適切な値を設定します。

以下は、set_cell_data_func() の使用方法とその他のものを示す例です: https://developer.gnome.org/gtkmm-tutorial/stable/sec-treeview-examples.html.en#sec-editable-細胞の例

このリンクも役立つはずです: https://developer.gnome.org/gtkmm-tutorial/stable/sec-treeview.html.en#treeview-cellrenderer-details

必要に応じて、Gtk::TreeView:: insert_column_with_data_func () を使用すると、これがもう少し簡潔になります。

並べ替えに関しては、 set_sort_func () を呼び出して、列の並べ替え方法を指定するだけでよいはずです:

次に、この定期的な並べ替えのアドバイスを適用する必要があります: https://developer.gnome.org/gtkmm-tutorial/stable/sec-treeview-sort.html.en

于 2015-12-30T20:20:54.093 に答える