【发布时间】:2021-06-01 13:24:39
【问题描述】:
我有这个:
GtkWidget *const Label = gtk_label_new("Welcome");
gtk_label_set_attributes((GtkLabel *)Label, ({
PangoAttrList *const Attrs = pango_attr_list_new();
pango_attr_list_insert(Attrs, pango_attr_size_new(36));
Attrs;
}));
gtk_container_add((GtkContainer *)Window, Label);
我试图在不使用某种需要解析的标记语言的情况下更改 GtkLabel 的文本大小
当前结果:
没有文字显示
预期结果:
文字显示如同使用gtk_label_set_markup("<span font=\"36\">Welcome</span>");
我应该如何进行?
更新:
以下工作显示文本:
GtkWidget *const Label = gtk_label_new(GameDirStr+2);
PangoAttrList *const Attrs = pango_attr_list_new();
PangoAttribute *const SizeAttr = pango_attr_size_new(72*PANGO_SCALE);
pango_attr_list_insert(Attrs, SizeAttr);
// pango_attribute_destroy(SizeAttr); // SEGFAULT
gtk_label_set_attributes((GtkLabel *)Label, Attrs);
pango_attr_list_unref(Attrs); // WORKS
pango_attribute_destroy(SizeAttr); // SEGFAULT even after the attributes were added to the label
gtk_container_add((GtkContainer *)Window, Label);
但是documentation 声明我最终应该使用pango_attribute_destroy() 释放它们,但这样做会导致段错误,即使在我将它们添加到列表之后也是如此
如何正确释放它们?
使用Pango属性改变文本大小的过程还包括释放内存等预期做法
【问题讨论】:
标签: c user-interface text label gtk