如何在GtkGrid中对齐小部件

白天

我是新来的GTK,正在尝试编写一个小界面。但是,我没有找到一个功能来帮助GtkGrid内的小部件对齐。下图显示(1)按钮的大小不同(2)标签内的文本未左对齐。我该如何调整?

#include <gtk/gtk.h>
//#include <iostream>
//using namespace std;



void load_file(GtkWidget *widget, gpointer data)
{
GtkWidget *dialog;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
gint res;

dialog = gtk_file_chooser_dialog_new ("Open File",
                                      NULL,
                                      action,
                                      "Cancel",
                                      GTK_RESPONSE_CANCEL,
                                      "Open",
                                      GTK_RESPONSE_ACCEPT,
                                      NULL);

res = gtk_dialog_run (GTK_DIALOG (dialog));
if (res == GTK_RESPONSE_ACCEPT)
  {
    char *filename;
    GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
    filename = gtk_file_chooser_get_filename (chooser);
    //open_file (filename);
    //g_free (filename);
  }

gtk_widget_destroy (dialog);

}


int main( int   argc,char *argv[] )
{
    gtk_init (&argc, &argv);

    GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(window),800,400);

    GtkWidget *lbl_ldmap = gtk_label_new("Load Map");
    GtkWidget *lbl_capacity = gtk_label_new("Capacity");
    GtkWidget *lbl_npassenger = gtk_label_new("Passengers");
    GtkWidget *lbl_nveh = gtk_label_new("Vehicles");
    GtkWidget *lbl_optby = gtk_label_new("Optimize By");

//    gtk_label_set_justify(GTK_LABEL(lbl_ldmap),gtk_label_set_justify);


    GtkWidget *btn_fchoose = gtk_button_new_with_label("...");
    GtkWidget *btn_start = gtk_button_new_with_label("Start");
    GtkWidget *btn_save = gtk_button_new_with_label("Save");
    GtkWidget *btn_about = gtk_button_new_with_label("About");
    GtkWidget *btn_close = gtk_button_new_with_label("Close");


    GtkWidget *mainwindow = gtk_grid_new();
    gtk_grid_set_row_spacing (GTK_GRID (mainwindow), 16);

    gtk_grid_attach(GTK_GRID(mainwindow),lbl_ldmap,0,0,2,2);  
    gtk_grid_attach(GTK_GRID(mainwindow),btn_fchoose,3,0,2,2); 
    gtk_grid_attach(GTK_GRID(mainwindow),lbl_capacity,0,2,2,2);
    gtk_grid_attach(GTK_GRID(mainwindow),lbl_npassenger,0,4,2,2);
    gtk_grid_attach(GTK_GRID(mainwindow),lbl_nveh,0,6,2,2);
    gtk_grid_attach(GTK_GRID(mainwindow),lbl_optby,0,8,2,2);

    gtk_grid_attach(GTK_GRID(mainwindow),btn_start,0,10,5,2);
    gtk_grid_attach(GTK_GRID(mainwindow),btn_save,6,10,5,2);
    gtk_grid_attach(GTK_GRID(mainwindow),btn_about,0,12,5,2);
    gtk_grid_attach(GTK_GRID(mainwindow),btn_close,6,12,5,2);


    GtkWidget *area = gtk_drawing_area_new();
    gtk_grid_attach(GTK_GRID(mainwindow),area,13,0,20,20);

    gtk_container_add(GTK_CONTAINER(window),mainwindow);

    g_signal_connect(G_OBJECT(btn_fchoose),"clicked",
                       G_CALLBACK(load_file),NULL);





    gtk_widget_show_all(window);

    gtk_main ();

    return(0);
}

在此处输入图片说明

Andlabs

容器小部件(例如GtkBox和GtkGrid)将不会填充可用空间,除非它们知道如何填充它们。你需要通过设置使GtkBox或GtkGrid的儿童展开一个或多个的hexpandhalignvexpand,和/或valign对这些部件(而不是在网格本身!)性质。有关更多详细信息,请参阅此页面

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Flutter 中的小部件中对齐按钮

如何在Flutter中对齐单个小部件?

如何在Flutter中的定位小部件内对齐文本?

如何在IPython Notebook中对齐小部件按钮

如何在 Flutter 的 GridView 中对齐小部件?

如何在 PyQt5 中对齐小部件

如何在Google Flutter中对齐文本小部件中的行?

如何在 Stack 小部件中添加 PageView 小部件?

如何在添加的小部件中添加新的小部件?

如何在同心圆Flutter中对齐我的Neumorphic小部件?

如何在您的应用程序中对齐 ttk 小部件?

如何在 PyQt5 布局中更紧密地对齐两个小部件?

如何在ttk Treeview小部件中将文本右对齐?

如何在单行小部件颤动上向左,居中,右对齐小部件

如何在 Kivy 中填充小部件?

如何在Flutter中模糊小部件

如何在文本中包含小部件?

如何围绕单个小部件对齐/渲染颤动小部件?

在行小部件中对齐文本小部件

如何在flutter中将同一行中的2个文本小部件与行的开头和结尾对齐?

如何连续对齐展开的小部件

在底部导航中对齐小部件

行中忽略的小部件对齐

Flutter:行中的小部件未对齐

如何在 Flutter 中的列小部件中隐藏行小部件

如何在另一个小部件的children属性中传递小部件列表?

如何在“小部件配置活动”中获取小部件名称(提供者)?

Flutter-如何在小部件测试中获取文本小部件

如何在gtk中的其他小部件的前面制作小部件