【问题标题】:How to justify text in center in gtk label in C如何在C中的gtk标签中心对齐文本
【发布时间】:2017-05-29 23:37:18
【问题描述】:

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

这就是它的样子:

谁能告诉我这里出了什么问题。

【问题讨论】:

  • 如果网格上除了您的标签之外没有其他内容,为什么还要使用网格?容器层次结构如何?网格的父级是一个窗口?
  • @JoséFonte 我有三个标签。其中两个在左上角和右上角对齐。这个(message_label)在它下面。所以我用了一个网格
  • @S Andrew Ok,Tnx 寻求反馈。正如@AndreLDM 所说,我建议您使用 Glade 并使用所有可用参数。您将了解 Gtk 中的布局是如何工作的,然后以编程方式实现它或使用 GtkBuilder。总帐
  • @JoséFonte 是的,我知道 glade,一开始我将它用于 UI。但是在我的应用程序中,我需要以全屏模式显示应用程序,而在使用 glade 时我无法做到这一点。所以我不得不重新使用 gtk 来制作 UI。
  • @S Andrew 您也可以在 Glade 中执行此操作,只需检索窗口,然后以编程方式更改参数。无论如何,提示是让您尝试布局。如果你还安装了 devhelp 包,那么你可以检查 API/Reference 上对应的 UI 参数。

标签: gtk label


【解决方案1】:

您应该使用 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 创建 UI,您的代码会更简洁,而且您可以轻松地将 UI 组合在一起,而不会与 API 发生冲突,也不会在 try-compile-assert-repeat 循环中浪费时间。 GtkInspector 也有很大帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多