如何将 GtkWidget 标签在其 GtkWidget 布局的中心与 GTK3 对齐?
How to align a GtkWidget label in the center of its GtkWidget layout in C with GTK3?
我有以下代码,但我很难将标签居中对齐
它的父级(布局),但对我没有任何作用:
int main(int argc, char ** argv){
GtkWidget *window;
GtkWidget *layout;
GtkWidget *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 1024, 600);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
layout = gtk_layout_new(NULL, NULL);
gtk_container_add(GTK_CONTAINER (window), layout);
label = gtk_label_new(NULL);
gtk_label_set_text(GTK_LABEL(label), "SOME TEXT");
gtk_layout_put(GTK_LAYOUT(layout), label, 0, 0);
// Here I'm trying to align my label to the center,
// but it doesn't work with any of the three functions
gtk_widget_set_halign(label, GTK_ALIGN_CENTER);
//gtk_label_set_xalign(GTK_LABEL(label), GTK_ALIGN_CENTER);
//gtk_misc_set_alignment(GTK_MISC(label), 0.5f, 0.5f);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
我还尝试了一些我可以在 GENOME 文档和其他 SO 问题中找到的其他功能,但它们大多已被弃用,或者也不起作用。在这一点上,因为我正在使用 GTK3,推荐的方法似乎是:
gtk_widget_set_halign(label, GTK_ALIGN_CENTER);
但它不起作用。标签还在我放的位置:
gtk_layout_put(GTK_LAYOUT(layout), label, 512, 300);
代码编译无任何错误或警告。
GtkLayout
,与其相关的 GtkFixed
一样,是当 none 其他容器可以满足您的目的时使用的最后手段容器。它只是将小部件放在您指定的位置。因此,水平对齐 API 将不起作用。使用GtkLayout
,你必须自己计算对齐。
我建议使用 GtkGrid
或其他功能更全的容器之一。
我有以下代码,但我很难将标签居中对齐 它的父级(布局),但对我没有任何作用:
int main(int argc, char ** argv){
GtkWidget *window;
GtkWidget *layout;
GtkWidget *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 1024, 600);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
layout = gtk_layout_new(NULL, NULL);
gtk_container_add(GTK_CONTAINER (window), layout);
label = gtk_label_new(NULL);
gtk_label_set_text(GTK_LABEL(label), "SOME TEXT");
gtk_layout_put(GTK_LAYOUT(layout), label, 0, 0);
// Here I'm trying to align my label to the center,
// but it doesn't work with any of the three functions
gtk_widget_set_halign(label, GTK_ALIGN_CENTER);
//gtk_label_set_xalign(GTK_LABEL(label), GTK_ALIGN_CENTER);
//gtk_misc_set_alignment(GTK_MISC(label), 0.5f, 0.5f);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
我还尝试了一些我可以在 GENOME 文档和其他 SO 问题中找到的其他功能,但它们大多已被弃用,或者也不起作用。在这一点上,因为我正在使用 GTK3,推荐的方法似乎是:
gtk_widget_set_halign(label, GTK_ALIGN_CENTER);
但它不起作用。标签还在我放的位置:
gtk_layout_put(GTK_LAYOUT(layout), label, 512, 300);
代码编译无任何错误或警告。
GtkLayout
,与其相关的 GtkFixed
一样,是当 none 其他容器可以满足您的目的时使用的最后手段容器。它只是将小部件放在您指定的位置。因此,水平对齐 API 将不起作用。使用GtkLayout
,你必须自己计算对齐。
我建议使用 GtkGrid
或其他功能更全的容器之一。