【问题标题】:how to obtain height of treeview/treeviewcolumn?如何获取树视图/树视图列的高度?
【发布时间】:2013-01-23 12:26:33
【问题描述】:

请问如何获取treeview/treeviewcolumn 的高度?我有简单的代码布局(里面是大树视图)和表格中的垂直滚动条。当我设置小的布局高度时,我看不到树视图的所有项目,当我设置它大时,我看到整个表格在布局底部有空白空间。是否可以设置布局,使其具有与 treeview 完全相同的高度或 treeviewcolumns 中的最大高度? 提前致谢。 一段代码:

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, ???);

还有一个问题 - 是否可以为树视图项目应用黑色边框颜色?

【问题讨论】:

    标签: gtk gtk# gtktreeview


    【解决方案1】:

    您应该能够在其暴露/绘制事件中可靠地获取树视图的大小。如果你喜欢它,你可以使用它的高度来调整布局大小。你可以猜出一个初始的大布局尺寸,第一次曝光会缩小它。经常调用 Expose,并且您不应该经常调整大小,因此应该使用检测新高度不同的逻辑。您还可以提防在树视图高度可能具有疯狂值的情况下提前调用暴露。

    【讨论】:

    • 您好,谢谢您的回答。我明白你的意思,但是从函数中获取树的大小我没有什么问题。我创建了活动 - tree.ExposeEvent += HandleTreeExposeEvent; void HandleTreeExposeEvent (object o, ExposeEventArgs args) { layout.SetSize(800, 'HOW TO GET THIS NUMBER'); }
    • treeview 是否有一些函数来获取它的高度?提前谢谢你。
    • 小部件的“分配”包含它的高度。我不知道 gtk# 但 gtk 有一个 gtk_widget_get_allocation() 方法。
    • 谢谢,它有效!对于其他寻求者:int lama=tree.Allocation.Height; layout.SetSize(800, (uint) lama); 放入 ExposeEvent。
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多