我想计算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.
答案 0 :(得分:0)
这些值取决于实现,因为它们需要有关目标显示器等的信息。理论上,不同的显示器可以有不同的设置,这些设置会使尺寸发生变化。
您可以在请求尺寸之前在顶层窗口上尝试gtk_widget_realize()
或gtk_widget_map()
或两者