题
我看在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 +队列(上面提到的拉伸变化事件,内部)的事件,并刷新它们,然后将控制权还给你。这很可能会导致一些视觉闪烁,虽然。
不隶属于 StackOverflow