如何获得gtktreeview标题的高度?

时间:2009-05-08 08:32:24

标签: gtk gtkmm gtktreeview

我查看了gtk源代码,标题高度是私有的。我尝试了一些东西,但它没有按照需要工作(heightWithHeader是1?!)

Glib::RefPtr<Gdk::Window> pWindow = treeView.get_bin_window();

treeView.set_headers_visible(true);
pWindow->get_size(width, heightWithHeader);

treeView.set_headers_visible(false);

pWindow->get_size(width, heightWithoutHeader);

r_treeView.set_headers_visible(true);

returnValue = heightWithHeader - heightWithoutHeader;

您能帮我解决另一个解决方案或修复我的代码吗?

更新:我必须调整树视图的高度以显示固定数量的行。我这样做是通过调整容器的大小(滚动窗口)到headerHeight + numberRowsToDisplay * heightOfRow。

1 个答案:

答案 0 :(得分:-1)

你的代码不起作用的原因很可能是你“太不耐烦了”,在你再次使标题不可见之前,没有给GTK +重新绘制小部件的时间。

当您进行需要重绘的通话时,GTK +不会立即绘制。而是重绘排队,然后从GTK +主循环一次完成。这样,按顺序对窗口小部件进行两次更改不会导致两次重绘,但只会导致一次。

这有点像黑客攻击,但你可以尝试“经典”GTK +事件刷新技巧,在打开标题后插入这样的循环:

while(gtk_events_pending())
  gtk_main_iteration();

只要GTK +的队列中有事件(上面提到的绘制更改是事件,内部),然后将它们刷新,然后将控制权交给您,这就会循环。但这很可能会导致一些视觉闪烁。