gpt4 book ai didi

c - 如何使 GtkScrolledWindow 内的 Gtk+ 小部件在打包到 GtkPane 中时展开?

转载 作者:行者123 更新时间:2023-12-02 03:24:22 25 4
gpt4 key购买 nike

我有一个程序显示两个 GtkTreeView包装在 GtkPaned 内(sscce:here):

gtk_paned_add1(GTK_PANED(paned), tree_view1);
gtk_paned_add2(GTK_PANED(paned), tree_view2);

结果如下:

Window presenting the two tree views

但是,表格可能会变得更大,所以我将其添加到 GtkScrolledWindow s(sscce:here):

GtkWidget *scrolled_window1 = gtk_scrolled_window_new(NULL, NULL),
*scrolled_window2 = gtk_scrolled_window_new(NULL, NULL);
gtk_container_add(GTK_CONTAINER(scrolled_window1), tree_view1);
gtk_container_add(GTK_CONTAINER(scrolled_window2), tree_view2);
gtk_paned_add1(GTK_PANED(paned), scrolled_window1);
gtk_paned_add2(GTK_PANED(paned), scrolled_window2);

但是,现在窗口会自行折叠到几乎模糊的程度,如下面的屏幕截图所示:

Insanely small window

如果我最大化窗口,第一列不会出现(尽管我可以手动展开它):

The first table does not appear

那么,在这种情况下使用 GtkScrolledWindows 获取第一个屏幕截图的外观的最佳方法是什么?另外,我可以定义 Pane 列相对于彼此的大小(例如,第一个列为 30%,第二个列为 70%?

最佳答案

我一直在使用这种模式(如果有人发布更好的答案,我会很高兴):

GtkWidget* treeView_, pane1_;
// [Removed code to create and show the widget heirarchy.]
GtkRequisition sizeReq;
gtk_widget_size_request(treeView_, &sizeReq); // get tree's preferred size
gtk_paned_set_position(GTK_PANED(pane1_), sizeReq.width);

这已经非常接近了,但是您可能会有一个带有一些隐藏像素的水平滚动条。由于我们的应用程序会记住用户对 Pane 位置的调整,因此它只需要在初始布局上看起来“足够好”即可。

此外,gtk_widget_size_request() 还要求返回有意义的内容。就我而言,在检索大小请求之前,我在层次结构上调用了 gtk_widget_show_all()。

关于c - 如何使 GtkScrolledWindow 内的 Gtk+ 小部件在打包到 GtkPane 中时展开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com