Сжимать окно в GTK + динамически при сжатии контента? - PullRequest
6 голосов
/ 18 января 2012

У меня есть окно в приложении Vala и изображение внутри него. Это изображение иногда изменяется на img.set_from_pixbuf(imgdata);, поэтому его размер также изменяется. Он встроен в Gtk.Box.

box = new Gtk.Box(Orientation.VERTICAL,5);
...
box.pack_end(img,false,false);

Так что, если раньше было большое изображение, и я заменил его на меньшее, окно остается смехотворно большим, и я не нашел способа динамически уменьшить его до требуемого места. Я пытался с window.set_default_size(box.width_request,box.height_request), но он всегда возвращает -1.

Так есть идеи, как изменить размер окна? Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Если я не ошибаюсь, автоматическое изменение размеров окон происходит только тогда, когда элементы слишком велики для рисования. Кроме того, метод set_default_size имеет значение только при первом рисовании окна и, если я не ошибаюсь, никогда не используется снова. Я бы предложил использовать метод изменения размера для установки размера окна. ( ссылка )

window.resize(box.width_request, box.height_request);

Одна вещь, которую вы должны помнить при использовании resize, если вы не можете изменить его размер меньше, чем request_size, если вы столкнулись с этой проблемой, используйте метод set_request_size.

0 голосов
/ 18 января 2012

Не слишком глубоко в этом, просто удар - делает вызов:

box.set_resize_mode(RESIZE_IMMEDIATE);
box.check_resize();

правильно делаешь?

...