GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()
Posted
技术标签:
【中文标题】GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()【英文标题】:GTK3 : gtk_window_resize() vs gtk_widget_set_size_request() 【发布时间】:2019-07-19 00:46:50 【问题描述】:我正在尝试设置 GtkWindow 的 [初始] 大小,但除了 gtk_widget_set_size_request()
函数之外没有任何作用。
GtkWindow* pw = …;
这不起作用,它得到了一些奇怪的大小:
gtk_window_resize(pw,800,600);
这也不起作用:
gtk_window_set_default_size(pw,800,600);
只有这个
gtk_widget_set_size_request(GTK_WIDGET(pw),800,600);
以某种方式工作 - 窗口将以接近 800x600 的尺寸显示。但问题是该函数有副作用:调用它后,用户无法将窗口调整为小于该大小 - 它设置了窗口的最小约束。
知道如何在 GTK 中定义窗口的初始/默认大小吗?
【问题讨论】:
来自 gtk.css 文件? 你确认你的窗口创建成功了吗? gtk_window_set_default_size () 应该可以正常工作。现在您列出了pygtk
标记,因此如果您正在使用该标记,则需要仔细检查该文档。如果我记得的话,有一种说法是 gtk_widget_set_size_request
将成为首选方法,但我没有那个方便的链接,或者当推送是为了它的使用时。
我不知道这是否重要,但我通常会使用GtkWidget *pw = ...
然后gtk_window_set_default_size (GTK_WINDOW (pw), ...
@DavidC.Rankin 窗口已成功创建为gtk_widget_set_size_request()
在同一位置工作。如果用gtk_window_set_default_size()
替换它 - 它不起作用。然而gtk_window_move_resize()
- 也不起作用。我迷失在移动/调整 GTK 函数的动物园中......
我想也许你想要的是 gtk_window_set_geometry_hints()。
【参考方案1】:
GTK 在设置窗口和小部件的大小方面有自己的理念。 您应该在设置默认大小之前设置几何提示。
gtk_window_set_default_size(pw,800,600);
这些提示可能是:
GdkGeometry hints;
hints.min_width = 800;
hints.max_width = 800;
hints.min_height = 600;
hints.max_height = 600;
gtk_window_set_geometry_hints( pw, GTK_WIDGET(pw), &hints, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
gtk_window_set_default_size (pw, 800, 600);
【讨论】:
以上是关于GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()的主要内容,如果未能解决你的问题,请参考以下文章