GTK+

GTK+ プログラミングに関する tips など。

GtkTreeView

GtkTreeViewで各行ごとの行数が一定である場合は、

g_object_set(treeview, "fixed-height-mode", TRUE, NULL);

のようにして fixed-height-mode を有効にすると描画が高速化される。

(また、GTK+ 2.6以降では gtk_tree_view_set_fixed_height_mode() 関数が追加されている)

GtkTreeStore

GtkTreeStoreに大量の行(数千〜)を追加する場合は、 gtk_tree_store_append()よりgtk_tree_store_prepend()を使用するほうが 圧倒的に高速である。

appendする場合は内部のリストを先頭から順に辿っていき、 追加する場所を探すという動作を行っているために O(n^2)のオーダーで処理量が増加していくためである。

また、GtkTreeStoreをクリアしたり大量の行を追加したりする場合は、

gtk_tree_view_set_model(tree_view, NULL);

として一度modelをviewから切り離し、処理が完了してから再びviewに modelを設定するほうが1.5倍程度高速になる。

GtkCellRenderer

GtkTreeViewはデフォルトの状態では行間のマージンがかなり大きくとられているが、 これを縮めたい場合はGtkCellRendererオブジェクトの"ypad"プロパティを

g_object_set(renderer, "ypad", 0, NULL);

のように設定するとマージンを調整することができる。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS