2013-02-21 2 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(). Вы должны использовать поля min_aspect и max_aspect в структуре GdkGeometry.

1

Как следует из другого ответа, вы можете использовать gtk_window_set_geometry_hints(). В документации указано:

Эта функция устанавливает подсказки о том, как пользователь может изменить размер окна. Вы можете установить минимальный и максимальный размер; разрешено изменение размера приращений (например, для xterm, вы можете изменять размер только на размер символа ); соотношение сторон; и более.

Прототип функции является следующим:

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

Вы бы указать минимальную и максимальную ширину и высоту с помощью GdkGeometry данных тип, который является структурой с полями, указанными ниже:

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; 
}; 
+0

Благодарим вас за ответ. Я попытался использовать эту функцию. Тем не менее, окно по-прежнему не сохраняет фиксированное соотношение сторон. –

+0

Возможно, вы также должны принять во внимание аргумент geom_mask, который описывается как «маска, указывающая, какие поля структуры следует обратить внимание». Вот его определение: http://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowHints – PALEN

+0

Если вы посмотрите на отредактированный вопрос, это то, что я сделал (я думаю ...) –

Смежные вопросы