设置小部件初始大小
Set widget initial size
如何在 GTK+3 中设置小部件 初始 大小?
我试过gtk_widget_set_size_request(widget,w,h)
在widget实现之前,然后gtk_widget_set_size_request(widget,-1,-1)
解除约束(在widget实现之后)。这导致更大的 window 具有更大的尺寸,但小部件的尺寸已最小化(它不记得我的初始尺寸)。
MCVE:
//@{"targets":[{"name":"initsize","type":"application","pkgconfig_libs":["gtk+-3.0"]}]}
#include <gtk/gtk.h>
int main()
{
gtk_init(NULL,NULL);
auto window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
auto paned=gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
gtk_container_add(GTK_CONTAINER(window),paned);
auto scrollbox=gtk_scrolled_window_new(NULL,NULL);
gtk_paned_add1(GTK_PANED(paned),scrollbox);
auto other=gtk_label_new("Right panel");
gtk_paned_add2(GTK_PANED(paned),other);
auto tv=gtk_text_view_new();
gtk_container_add(GTK_CONTAINER(scrollbox),tv);
//Make the widget large
gtk_widget_set_size_request(scrollbox,500,300);
gtk_widget_show_all(window);
//Remove constraint. The new (larger) size of `window` is preserved as
//desired, but `scrollbox` shrinks as a consequence of the constraint
//removal
gtk_widget_set_size_request(scrollbox,-1,-1);
gtk_main();
return 0;
}
提示:创建此示例时,在添加窗格小部件时出现问题。
这是所需初始布局的屏幕截图。
我通过请求右侧的 ScrolledWindow 和右侧的 GLAarea 的大小来实现这一点(没有这个,一切都会崩溃到几乎为零)。配置 UI 后,应该可以缩小这些面板中的任何一个,因此必须删除约束 而不影响任何尺寸 。我还尝试保留窗格位置(获取其值、删除约束并恢复旧位置,但这没有用)。
最接近的解决方案可能是通过使用 gtk_window_set_default_size()
将主要 window 的大小设置为所需大小的总和。然后使用 gtk_paned_set_position ()
和最左边的小部件的值。虽然这只是一个近似解决方案,但对于大多数应用来说应该足够了。
如何在 GTK+3 中设置小部件 初始 大小?
我试过gtk_widget_set_size_request(widget,w,h)
在widget实现之前,然后gtk_widget_set_size_request(widget,-1,-1)
解除约束(在widget实现之后)。这导致更大的 window 具有更大的尺寸,但小部件的尺寸已最小化(它不记得我的初始尺寸)。
MCVE:
//@{"targets":[{"name":"initsize","type":"application","pkgconfig_libs":["gtk+-3.0"]}]}
#include <gtk/gtk.h>
int main()
{
gtk_init(NULL,NULL);
auto window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
auto paned=gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
gtk_container_add(GTK_CONTAINER(window),paned);
auto scrollbox=gtk_scrolled_window_new(NULL,NULL);
gtk_paned_add1(GTK_PANED(paned),scrollbox);
auto other=gtk_label_new("Right panel");
gtk_paned_add2(GTK_PANED(paned),other);
auto tv=gtk_text_view_new();
gtk_container_add(GTK_CONTAINER(scrollbox),tv);
//Make the widget large
gtk_widget_set_size_request(scrollbox,500,300);
gtk_widget_show_all(window);
//Remove constraint. The new (larger) size of `window` is preserved as
//desired, but `scrollbox` shrinks as a consequence of the constraint
//removal
gtk_widget_set_size_request(scrollbox,-1,-1);
gtk_main();
return 0;
}
提示:创建此示例时,在添加窗格小部件时出现问题。
这是所需初始布局的屏幕截图。
我通过请求右侧的 ScrolledWindow 和右侧的 GLAarea 的大小来实现这一点(没有这个,一切都会崩溃到几乎为零)。配置 UI 后,应该可以缩小这些面板中的任何一个,因此必须删除约束 而不影响任何尺寸 。我还尝试保留窗格位置(获取其值、删除约束并恢复旧位置,但这没有用)。
最接近的解决方案可能是通过使用 gtk_window_set_default_size()
将主要 window 的大小设置为所需大小的总和。然后使用 gtk_paned_set_position ()
和最左边的小部件的值。虽然这只是一个近似解决方案,但对于大多数应用来说应该足够了。