* GTK+ [#r1c66316]

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

** GtkTreeView [#sa60dc3a]
GtkTreeViewで各行ごとの行数が一定である場合は、
 g_object_set(treeview, "fixed-height-mode", TRUE, NULL);
のようにして fixed-height-mode を有効にすると描画が高速化される。

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

*** GtkTreeStore [#v16ff0cc]
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 [#j04a28e1]
GtkTreeViewはデフォルトの状態では行間のマージンがかなり大きくとられているが、
これを縮めたい場合はGtkCellRendererオブジェクトの"ypad"プロパティを
 g_object_set(renderer, "ypad", 0, NULL);
のように設定するとマージンを調整することができる。

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