代码之家  ›  专栏  ›  技术社区  ›  Ionut Anghelcovici

如何获取gtktreeview收割台的高度?

  •  1
  • Ionut Anghelcovici  · 技术社区  · 17 年前

    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 回复  |  直到 17 年前
        1
  •  -1
  •   unwind    17 年前

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

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

    while(gtk_events_pending())
      gtk_main_iteration();
    

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

    推荐文章