LINUX.ORG.RU

Управление размерами виджетов в gtk_box


0

0

вот например у меня есть вертикальный контейнер

GtkWidget *v_leftbuttons_box;
v_leftbuttons_box = gtk_vbox_new (FALSE, 0);
gtk_container_add(GTK_CONTAINER (v_main_box), v_leftbuttons_box);

// не работает
// gtk_widget_set_size_request (v_leftbuttons_box, 50 , 100);
gtk_widget_show (v_leftbuttons_box);

// я добавляю туда кнопки

GtkWidget *button1;
button1 = gtk_button_new_with_label («Первая кнопка»);
gtk_box_pack_start(GTK_BOX (v_leftbuttons_box), button1, FALSE, FALSE, 0);
gtk_widget_show (button1);

//----------------------
GtkWidget *button2;
button2 = gtk_button_new_with_label («Вторая кнопка»);
gtk_box_pack_start(GTK_BOX (v_leftbuttons_box), button2, FALSE, FALSE, 5);
gtk_widget_show (button2);

//----------------------
GtkWidget *button3;
button3 = gtk_button_new_with_label («Третья кнопка»);
gtk_box_pack_start(GTK_BOX (v_leftbuttons_box), button3, FALSE, FALSE, 5);
gtk_widget_show (button3);


но эти кнопки занимают всю ширину, по высоте с помощью gtk_widget_set_size_request я могу менять их размер, а вот в ширину максимум идёт, т.е. во всё окно
вот так
http://s59.radikal.ru/i163/1006/e9/ba59a1f68788.png

как вообще мне оптимально управлять размерами моих объектов и желательно их положением (ну вот для этого есть fixed, в принципе его можно). Я новичок в GTK, извиняюсь за глупые вопросы


vbox, он для того и vbox, чтобы выравнивать по вертикали. можешь в каждую ячейку vbox дополнительно ложить hbox, а в него уже добавлять кнопку

ananas ★★★★★ ()

gtk_widget_set_size_request - это, вроде, установка минимума. Т.е. минимального размера виджетов.

gtk_window_set_geometry_hints - эта функция позволяет установить как максимум, так и минимум.

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

даже лучше для этого использовать GtkAspectFrame

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

>>gtk_window_set_geometry_hints работает только для всего окна

Более того, оно же работает только при изменении размеров окна пользователем, не?

MuZHiK-2 ★★★★ ()
Ответ на: комментарий от g-71

>>ну да это логично, а в плане оптимизации и грамотного простроения кода - это правильно ?

Обычно интерфейс сейчас клепают в glade, а потом подключают его в проге. И да, почитай что-нибудь для начала по GTK, GObject и GLib, иначе будешь плохо понимать суть происходящего.

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

кстати да, с появлением GtkBuilder наконец-таки стало возможным создавать просто виджет в качестве конечного объекта, а не как раньше - только окно. Собственно теперь glade можно юзать в полный рост.

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