如何在 C 中的 gtk 标签中对齐文本
How to justify text in center in gtk label in C
我有一个 Gtk Label
,我想在上面显示单行文本。例如文本是:
Linux is a Unix-like computer operating system
现在我想在标签的中心显示这段文字。但问题是它只出现在顶部。
这是我为此使用的代码:
Message_Label = gtk_label_new (" ");
gtk_grid_attach (GTK_GRID (grid), Message_Label, 0, 1, 2, 1);
gtk_label_set_line_wrap_mode(GTK_LABEL(Message_Label),PANGO_WRAP_WORD);
gtk_label_set_line_wrap(GTK_LABEL(Message_Label),TRUE);
gtk_misc_set_alignment (GTK_MISC (Message_Label), 0.5, 0.5);
gtk_label_set_justify(GTK_LABEL(Message_Label),GTK_JUSTIFY_CENTER);
这是它的样子:
任何人都可以告诉我这里有什么问题吗?
您应该 vexpand 属性 使标签填充自由垂直 space。查看工作示例:
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window, *grid, *label;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "App Sample");
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
grid = gtk_grid_new ();
gtk_container_add (GTK_CONTAINER (window), grid);
label = gtk_label_new ("Linux is a Unix-like computer operating system ");
gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
gtk_widget_set_vexpand (label, TRUE);
gtk_widget_set_hexpand (label, TRUE);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
但是正如 José Fonte 所问,当您只有一个标签时,为什么要使用网格?可能是为了使问题更简单,但在其原始上下文之外,网格似乎膨胀了。
我推荐 Glade to create the UI, your code will be cleaner and you'll easily put your UI together without fighting the API and wasting hours in a try-compile-assert-repeat cycle. GtkInspector 也很有帮助。
我有一个 Gtk Label
,我想在上面显示单行文本。例如文本是:
Linux is a Unix-like computer operating system
现在我想在标签的中心显示这段文字。但问题是它只出现在顶部。
这是我为此使用的代码:
Message_Label = gtk_label_new (" ");
gtk_grid_attach (GTK_GRID (grid), Message_Label, 0, 1, 2, 1);
gtk_label_set_line_wrap_mode(GTK_LABEL(Message_Label),PANGO_WRAP_WORD);
gtk_label_set_line_wrap(GTK_LABEL(Message_Label),TRUE);
gtk_misc_set_alignment (GTK_MISC (Message_Label), 0.5, 0.5);
gtk_label_set_justify(GTK_LABEL(Message_Label),GTK_JUSTIFY_CENTER);
这是它的样子:
任何人都可以告诉我这里有什么问题吗?
您应该 vexpand 属性 使标签填充自由垂直 space。查看工作示例:
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window, *grid, *label;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "App Sample");
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
grid = gtk_grid_new ();
gtk_container_add (GTK_CONTAINER (window), grid);
label = gtk_label_new ("Linux is a Unix-like computer operating system ");
gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
gtk_widget_set_vexpand (label, TRUE);
gtk_widget_set_hexpand (label, TRUE);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
但是正如 José Fonte 所问,当您只有一个标签时,为什么要使用网格?可能是为了使问题更简单,但在其原始上下文之外,网格似乎膨胀了。
我推荐 Glade to create the UI, your code will be cleaner and you'll easily put your UI together without fighting the API and wasting hours in a try-compile-assert-repeat cycle. GtkInspector 也很有帮助。