我有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);
这就是它的样子:
任何人都可以就此出现的问题向我提出任何想法。
答案 0 :(得分:3)
你应该使用vexpand属性来使标签填充自由垂直空间。见工作样本:
#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来创建用户界面,你的代码会更干净,你可以轻松地将你的用户界面放在一起,而无需对抗API并在try-compile-assert-repeat循环中浪费时间。 GtkInspector也很有帮助。