LINUX.ORG.RU

«Резиновый» интерфейс GTK+

 , ,


0

1

Пишу себе с использованием GTK+ без знания оного, параллельно изучаю его.
Имею такое: это Window, в котором есть VBox, содержащий Toolbar, HBox и Statusbar. HBox в свою очередь содержит два TreeView (первый ещё упакован в ScrolledWindow) и DrawingArea. Надеюсь, иерархия понятна.
Проблема видна на скриншоте: при увеличении размера окна TreeView неоправданно тянутся по вертикали, но это ещё терпимо, а вот Toolbar совершенно ужасно тянется по горизонтали. И я ничего с этим поделать не могу: отловить ресайз окна я могу, а вот установить размер виджетов — нет. Вижу только setSizeRequest(), но как я понял, он нужен для установки минимального, а не максимального размера. Хочу, чтобы TreeView не тянулись больше, чем самая длинная строчка в них, тогда будет больше места для DrawingArea. И нужно что-то делать с уродством тулбара.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

потыкай в глэйде проперти shrink resize у виджетов... посмотри как они работают, задай у себя в коде нужное тебе поведение.

jo_b1ack ★★★★★
()
Ответ на: комментарий от deathmokar

На самом деле кода много и его качество оставляет желать лучшего. Стыдно, но я выложу кусок:

		scroll_figures.add(lview_figures);
		hbox.add(scroll_figures);
		hbox.add(lview_points);

		hbox.add(darea);
		vbox.add(toolbar);
		vbox.add(hbox);
		vbox.packStart(sbar, false, false, 0);
		add(vbox);
Не знаю, правда, какой от этого куска профит. Я это уже словами описал.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от ananas

смотри в доках смысл параметров expand

опечатался с resize... конечно expand

jo_b1ack ★★★★★
()
Ответ на: комментарий от ananas

Спасибо всем ответившим, теперь я понял смысл packStart и packEnd и их параметров.

		scroll_figures.add(lview_figures);
		hbox.packStart(scroll_figures, false, false, 0);
		hbox.packStart(lview_points, false, false, 0);
		hbox.packStart(darea, true, true, 0);
		vbox.packStart(toolbar, false, false, 0);
		vbox.packStart(hbox, true, true, 0);
		vbox.packStart(sbar, false, false, 0);
		add(vbox);
Теперь всё прекрасно.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

да. box - множественный контейнер. а использование add не позволит добавлять несколько виджетов, потому что превращает box в обычный container, с одним потомком

ananas ★★★★★
()
Ответ на: комментарий от ananas

использование add не позволит добавлять несколько виджетов, потому что превращает box в обычный container, с одним потомком

4.2: код выше, где я использовал только add работает и даёт результат, как на скриншоте в первом посте.
А по GNOME3 ещё можно задать вопрос или лучше отдельным топиком?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

4.2: код выше, где я использовал только add работает и даёт результат

в третьем - может быть, не буду спорить

А по GNOME3 ещё можно задать вопрос или лучше отдельным топиком?

лучше отдельным

ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.