如何证明C中gtk标签中心的文本

时间:2017-05-29 10:33:06

标签: gtk label

我有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); 

这就是它的样子:

enter image description here

任何人都可以就此出现的问题向我提出任何想法。

1 个答案:

答案 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;
}

Sample screenshot

但正如José Fonte所问,当你只有标签时,为什么要使用网格呢?可能是为了使问题更简单,但出于原始背景,网格看起来很臃肿。

我建议Glade来创建用户界面,你的代码会更干净,你可以轻松地将你的用户界面放在一起,而无需对抗API并在try-compile-assert-repeat循环中浪费时间。 GtkInspector也很有帮助。