【发布时间】:2016-03-20 15:32:50
【问题描述】:
我想计算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。
【问题讨论】:
-
您现在需要尺寸吗?如果你可以推迟计算直到窗口已经realized, mapped, or shown,你可能会得到正确的分配数据。
-
不幸的是,我不能推迟计算,直到窗口已经实现。有没有办法在实现之前获得尺寸?