0

treeview / treeviewcolumnの高さを取得するにはどうすればよいですか?テーブルにレイアウト(内部は大きなツリービュー)と垂直スクロールバーを備えた単純なコードがあります。レイアウトの高さを低く設定すると、ツリービューのすべてのアイテムが表示されません。大きく設定すると、レイアウトの下部に空のスペースがあるテーブル全体が表示されます。ツリービューとまったく同じ高さ、またはツリービュー列から最大の高さになるようにレイアウトを設定することは可能ですか?前もって感謝します。コードの一部:

tree = new Gtk.TreeView();
vadjustment = new Gtk.Adjustment(0, 0, 0, 0, 0, 0);
vscrollbar = new Gtk.VScrollbar(vadjustment);
Lyout layout = new Layout(null, vadjustment);
layout.Put(tree, 0, 0);
Table table =  new Table(1, 2, false);
table.Attach(layout, 0, 1, 0, 1, Gtk.AttachOptions.Expand|Gtk.AttachOptions.Fill, Gtk.AttachOptions.Expand|Gtk.AttachOptions.Fill, 0, 0);
table.Attach(vscrollbar, 1, 2, 0, 1, Gtk.AttachOptions.Shrink, Gtk.AttachOptions.Shrink|Gtk.AttachOptions.Fill, 0, 0);
box.PackStart (table, true, true, 4);
vbox1.Add(box);
...
TreeViewColumn first = new TreeViewColumn();
first.Title=h1;
Gtk.CellRendererText first_name_cell = new Gtk.CellRendererText ();
first.PackStart(prvy_name_cell, true);
first_name_cell.Width=20;
...
tree.AppendColumn (first);
layout.SetSize(800, ???);

そしてもう1つの質問-ツリービューアイテムに黒の境界線の色を適用することは可能ですか?

4

1 に答える 1

0

公開/描画イベントでツリービューのサイズを確実に取得できるはずです。それに引っ掛かると、その高さを使用してレイアウトサイズを調整できます。最初の大きなレイアウトサイズを推測でき、最初の公開でそれが縮小されます。Exposeは頻繁に呼び出され、頻繁にサイズを変更するべきではないため、新しい高さが異なることを検出するロジックを使用する必要があります。また、ツリービューの高さがおかしな値になる可能性があるエクスポーズの初期の呼び出しを防ぐこともできます。

于 2012-04-07T20:04:04.747 に答える