我看在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;

您可以帮我另一种解决办法或修复我的代码?

<强>更新我必须调整树视图的高度,以显示行的固定数目。我通过调整容器(scrolledwindow)的大小,以headerHeight + numberRowsToDisplay * heightOfRow。

要这样做
有帮助吗?

解决方案

您的代码不工作的原因很可能是你这个人“太心急”,不给GTK +时间你做头再次无形之前做小部件的重绘。

当你做到这一点需要重绘的调用GTK +没有立即下。相反重绘进行排队,然后从GTK +主循环一次完成。这样一来,做两个变化到在序列窗口小部件不导致两个重画,但只有一个。

这是一个黑客位,但你打开后头,你可以试试“经典” GTK +事件冲洗窍门,通过插入这样一个循环:

while(gtk_events_pending())
  gtk_main_iteration();

此简单地循环,只要有在的GTK +队列(上面提到的拉伸变化事件,内部)的事件,并刷新它们,然后将控制权还给你。这很可能会导致一些视觉闪烁,虽然。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top