在盒子或其他容器中对齐小部件(例如GtkLabel和GtkEntry)-最佳做法 [英] Align widgets (e.g. GtkLabel and GtkEntry) in boxes or other containers - best practice

查看:87
本文介绍了在盒子或其他容器中对齐小部件(例如GtkLabel和GtkEntry)-最佳做法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在框或框架等垂直容器中对齐不同(文本)窗口小部件的最佳做法是什么?请没有硬编码的解决方案.

What is the best practice for aligning different (text) widgets in vertical containers such as boxes or frames etc? No hard coded solution please.

在此处输入图片描述

#include <gtk/gtk.h>

int main(int argc, char** argv) {
    GtkWidget *window, *hbox, *vbox[2];

    gtk_init(NULL,NULL);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_set_border_width (GTK_CONTAINER(window), 10);

    hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,  10);
    vbox[0] = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
    vbox[1] = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
    gtk_container_add(GTK_CONTAINER(window), hbox);
    gtk_container_add(GTK_CONTAINER(hbox), vbox[0]);
    gtk_container_add(GTK_CONTAINER(hbox), vbox[1]);

    gtk_box_pack_start(GTK_BOX(vbox[0]), gtk_label_new("name"), FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox[0]), gtk_label_new("first name"), FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox[0]), gtk_label_new("village"), FALSE, FALSE, 0);

    gtk_box_pack_start(GTK_BOX(vbox[1]), gtk_entry_new(), FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox[1]), gtk_entry_new(), FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox[1]), gtk_entry_new(), FALSE, FALSE, 0);

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show_all(window);

    gtk_main();
    return 0;
}

感谢您的帮助

推荐答案

您想要的是 GtkGrid —将小部件打包为行和列

GtkGrid — Pack widgets in rows and columns

GtkWidget *grid = gtk_grid_new();

并附加内容:

gtk_grid_attach(grid, gtk_label_new("name"),       0, 0, 1, 1);
gtk_grid_attach(grid, gtk_label_new("first name"), 0, 1, 1, 1);
gtk_grid_attach(grid, gtk_label_new("village"),    0, 2, 1, 1);

gtk_grid_attach(grid, gtk_entry_new(),             1, 0, 1, 1);
gtk_grid_attach(grid, gtk_entry_new(),             1, 1, 1, 1);
gtk_grid_attach(grid, gtk_entry_new(),             1, 2, 1, 1);

这篇关于在盒子或其他容器中对齐小部件(例如GtkLabel和GtkEntry)-最佳做法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆