首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GTK+:布局对齐问题

GTK+:布局对齐问题
EN

Stack Overflow用户
提问于 2011-11-22 16:36:32
回答 2查看 522关注 0票数 1

我有一个简单的问题,可能很难描述。

我的GTK+窗口如下所示:

假设它有3个组件:2个按钮工具栏和一个绘图区域。

在左边我有一个垂直的按钮工具栏,右边是绘图区域(很大),下面是一个水平的按钮工具栏。

我正在尝试让左侧垂直工具栏恰好位于绘图区域的中间,但水平工具栏位于绘图区域的下方,但第一个按钮应该正好从绘图区域开始的位置开始。

我可以得到一个(我的任何条件),但不能两个都得到!

我可以用我想要的方式对齐我的组件吗?

我正在为放置按钮的垂直工具栏创建一个vbox。我有另一个带有绘图区域和水平工具栏的垂直组件(这是它自己的hbox)。之后,我创建了一个居中对齐,并将按钮的垂直工具栏放入其中。最后,我将这两个元素放回一个hbox中。

结果是,水平条位于其右侧的绘图区域下方,但左侧的垂直条位于绘图区域和水平条(而不仅仅是水平区域)的中心。

我将代码放在下面,但希望它不会太难读:

代码语言:javascript
复制
    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);

我真的很想知道我的问题是否可以解决。我想我是根据一个元素(绘图区域)的位置来定义两个容器(或元素,按钮栏)的位置,但我不知道这是否可行。

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-22 18:37:41

正如Johannes所说,你应该使用GtkTable。问题是,无论是在HBox中还是在VBox中,在计算大小时总是要考虑左下角的空间。所以你的工具栏都不应该放在一个可以展开的容器中。

请看这张图:

红色区域不能分配给你的任何工具栏,否则它不会按你想要的方式对齐。在这里,我认为对齐不会对你有帮助。因此,我看到的唯一解决方案就是使用GtkTable。此外,在GTK3中,GtkHBox和GtkVBox已被弃用,GtkTable也已弃用,取而代之的是GtkGrid,它的工作方式与GtkTable差不多。

票数 2
EN

Stack Overflow用户

发布于 2011-11-22 17:40:49

您可以使用2x2 GtkTable,并将左下角的单元格保留为空。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8223963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档