GTK+:布局对齐问题
我有一个很难描述的简单问题 我的GTK+窗口如下所示: 假设它有3个组件:2个按钮工具栏和一个绘图区域 在左边我有一个垂直的按钮工具栏,在右边有一个很大的绘图区域,下面是一个水平的按钮工具栏GTK+:布局对齐问题,gtk,Gtk,我有一个很难描述的简单问题 我的GTK+窗口如下所示: 假设它有3个组件:2个按钮工具栏和一个绘图区域 在左边我有一个垂直的按钮工具栏,在右边有一个很大的绘图区域,下面是一个水平的按钮工具栏 我试图让左边的垂直工具栏正好在绘图区域的中间,但是水平在绘图区域的下方,但是第一个按钮应该从绘图区域开始的地方开始。 我可以得到一个我的任何条件,但不是两个 我是否可以按照我希望的方式对齐我的组件 我正在为放置按钮的垂直工具栏创建vbox。我有另一个垂直组件,带有绘图区域和水平工具栏,这是它自己的hbox。
我试图让左边的垂直工具栏正好在绘图区域的中间,但是水平在绘图区域的下方,但是第一个按钮应该从绘图区域开始的地方开始。 我可以得到一个我的任何条件,但不是两个
我是否可以按照我希望的方式对齐我的组件 我正在为放置按钮的垂直工具栏创建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);
我很想知道我的问题是否可以解决。我想我是在定义两个容器或元素的位置,按钮栏基于绘图区域中一个元素的位置,我不知道这是否可行
非常感谢。您可以使用2x2 GtkTable并保持左下角单元格为空。您可以使用2x2 GtkTable并保持左下角单元格为空。正如Johannes所说,您应该使用GtkTable进行此操作。问题是,无论是在HBox还是VBox中,在计算大小时都会考虑左下角的空间。因此,所有工具栏都不应位于展开的容器中 见下图:
红色区域不能分配给任何工具栏,否则它将不会按照您想要的方式对齐。我想,在这里,对齐对你没有帮助。因此,我看到的唯一解决方案是使用GtkTable。此外,在GTK3中,GtkHBox和GTKVOX以及GtkTable都已被弃用,取而代之的是GtkGrid,它的工作原理或多或少类似于GtkTable。正如Johannes所说,您应该使用GtkTable。问题是,无论是在HBox还是VBox中,在计算大小时都会考虑左下角的空间。因此,所有工具栏都不应位于展开的容器中 见下图: 红色区域不能分配给任何工具栏,否则它将不会按照您想要的方式对齐。我想,在这里,对齐对你没有帮助。因此,我看到的唯一解决方案是使用GtkTable。此外,在GTK3中,GtkHBox和GTKVOX以及GtkTable都已被弃用,取而代之的是GtkGrid,它的工作原理或多或少类似于GtkTable