2013-02-21 61 views
1

我有一个GtkWindow我想调整大小,但受到比例限制。什么是最简单的方法来实现呢?我是否应该手动调整每个configure-event的大小,还是有更简单的方法来完成它?如何强制窗口在GTK +中保持特定的比例?

我的窗口小部件的层次结构看起来像这样:

GtkWindow 
    GtkBox 
    GtkToolbar 
    GtkBox 
     GtkAspectFrame 

从我得到了答案,我想这样的事情:

gh = Gdk.Geometry() 
    gh.min_aspect = 0.5 
    gh.max_axpect = 0.5 
    w.set_geometry_hints(None, gh, Gdk.WindowHints.ASPECT) 

不过,我还是可以调整我的任何窗口我想要的方面。我错过了什么?

回答

1

使用gtk_window_set_geometry_hints()。您需要在GdkGeometry结构中使用min_aspect和max_aspect字段。

1

正如其他答案所示,您可以使用gtk_window_set_geometry_hints()。该文档说:

该函数设置有关窗口如何由用户调整大小的提示。您可以设置最小和最大尺寸;允许调整大小 增量(例如,对于xterm,只能调整 字符的大小); 长宽比;和更多。

功能的原型如下:

struct GdkGeometry { 
    gint min_width; 
    gint min_height; 
    gint max_width; 
    gint max_height; 
    gint base_width; 
    gint base_height; 
    gint width_inc; 
    gint height_inc; 
    gdouble min_aspect; 
    gdouble max_aspect; 
    GdkGravity win_gravity; 
}; 

void gtk_window_set_geometry_hints (GtkWindow *window, 
            GtkWidget *geometry_widget, 
            GdkGeometry *geometry, 
            GdkWindowHints geom_mask); 

你会使用GdkGeometry数据 类型这与下面指定的字段的结构指定的最小和最大宽度和高度

+0

谢谢你的回答。我试图使用该功能。但是,窗口仍然没有保持固定的宽高比。 – 2013-02-26 13:23:58

+0

也许你还应该考虑geom_mask参数,如下所示:“掩码指示应该关注哪些结构字段”。这是它的定义:http://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowHints – PALEN 2013-02-26 15:03:52

+0

如果你看看编辑的问题,这就是我所做的(我认为...) – 2013-02-26 15:44:18