2013-02-21 58 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