У меня есть простая проблема, которую трудно описать.
Мое окно GTK + выглядит следующим образом:
Представьте, что оно состоит из 3 компонентов: 2 панели инструментов кнопок и одна область рисования.
Слева у меня вертикальная панель инструментов с кнопками, справа - область рисования (большая), а под ней - горизонтальная панель инструментов с кнопками.
Япытаясь сделать так, чтобы левая вертикальная панель инструментов была точно посередине области рисования, а горизонтальная - ниже области рисования, но первая кнопка должна начинаться именно там, где начинается область рисования.
Я могу получитьодин (любое из моих условий), но не оба!
Могу ли я выровнять свои компоненты так, как я собираюсь, пожалуйста?
Я создаю vbox для вертикальной панели инструментов, где япоставить кнопки.У меня есть еще один вертикальный компонент с областью рисования и горизонтальной панелью инструментов (это его собственный hbox).После этого я создаю выравнивание по центру и помещаю в него вертикальную панель инструментов с кнопками.Наконец, я собрал эти два элемента в hbox.
В результате горизонтальная полоса находится ниже области рисования в правильном месте, а вертикальная полоса слева - в центре обеихобласть рисования и горизонтальная полоса (а не только горизонтальная область).
Я помещаю код ниже, но, надеюсь, его не так сложно прочитать:
GtkWidget *infoBox = gtk_vbox_new(FALSE, 10);
GtkWidget *drawingArea = gtk_drawing_area_new();
GtkWidget *toolBar = gtk_vbox_new(FALSE, 10);
/* Put the buttons (vertical bar on the left) */
GtkWidget *deviceButtons = gtk_hbox_new(FALSE, 5);
/* Put the buttons (horizontal bar below the drawing area) */
GtkWidget *verticalView = gtk_vbox_new(FALSE, 10);
GtkWidget *centerAlignment = gtk_alignment_new(0, 0.5, 0, 0);
gtk_container_add(GTK_CONTAINER(centerAlignment), toolBar);
GtkWidget *actionView = gtk_hbox_new(FALSE, 15);
gtk_box_pack_start(GTK_BOX(actionView), centerAlignment, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(verticalView), drawingArea, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(verticalView), deviceButtons, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(actionView), verticalView, FALSE, FALSE, 0);
GtkWidget *deviceView = gtk_vbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(deviceView), actionView, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoBox), deviceView, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(deviceWindow), infoBox);
Я бы действительнохотел бы знать, разрешима ли моя проблема.Я думаю, что я определяю положение двух контейнеров (или элементов, полос кнопок) на основе положения одного элемента (области рисования), и я не знаю, возможно ли это.
Спасибоочень много.