我想计算 GtkFrame
的左边框和上边框大小.我使用以下代码:
static void computeborder(GtkWidget *frame)
{
GtkAllocation alloc, child_alloc;
int borderTop, borderLeft;
gtk_widget_get_allocation(frame, &alloc);
GTK_FRAME_GET_CLASS(frame)->compute_child_allocation(GTK_FRAME(frame), &child_alloc);
borderTop = child_alloc.y - alloc.y;
borderLeft = child_alloc.x - alloc.x;
printf("BORDER TOP: %d BORDER LEFT %d\n", borderTop, borderLeft);
}
这工作正常,但仅如果顶级窗口托管 GtkFrame
已经显示。但是,我需要在包含我的 GtkFrame
的顶级窗口之前了解边框大小。显示小部件。
如果顶层窗口里面包含我的GtkFrame
还没开通,(-1,-1)
在 alloc
中返回和 (1,1)
在 child_alloc
中返回.如果顶层窗口已经打开,则会返回正确的尺寸,我可以计算边框尺寸。
但是,当顶层窗口隐藏时,我需要计算边框大小。那么如何计算我的 GtkFrame
的边框大小呢?在这种情况下?
我正在使用 GTK 2。
最佳答案
这些值取决于实现,因为它们需要有关目标显示器等的信息。理论上,不同的显示器可以有不同的设置,这将使尺寸发生变化。
在请求尺寸之前,您可以在顶层窗口中尝试 gtk_widget_realize()
或 gtk_widget_map()
或两者
关于linux - 当窗口不可见时计算 GtkFrame 的边框大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115733/