我有一個可能很難描述的簡單問題。GTK +:佈局對齊問題
我的GTK +窗口是這樣的:
想象一下,它有3個組件:按鈕的2個工具欄和一個繪圖區域。
在左邊,我有一個垂直的按鈕工具欄,右邊是繪圖區(很大),下面有一個水平的按鈕工具欄。
我想讓左側垂直工具欄完全位於繪圖區域的中間,但水平線位於繪圖區域下方,但第一個按鈕應該從繪圖區域開始的位置開始。
我能夠得到一個(我的任何條件),但不是兩個!
我能否按我想要的方式對齊組件?
我正在爲垂直工具欄創建一個放置按鈕的vbox。我有另一個垂直組件與繪圖區域和水平工具欄(這是它自己的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);
我真的很想知道,如果我的問題是可以解決的。我想我是根據一個元素(繪圖區域)的位置來定義兩個容器(或元素,按鈕條)的位置,我不知道這是否可能。
非常感謝。
非常感謝! – Jary