使用GtkLabel标记时出现多余前置字符,求问题排查方案
问题解决:GtkLabel使用markup设置前景色出现多余前置字符
问题原因
你代码中错误地用HTML实体<和>表示标记的<和>符号,而g_markup_printf_escaped函数会对格式字符串里的&字符进行转义,最终生成的markup会包含&lt;这类转义实体。GTK解析时会把&lt;渲染为<字符,也就是你看到的多余前置字符。
修正后的代码
// 直接使用原生<和>作为标记,g_markup_printf_escaped仅转义%s对应的变量内容 sMarkup = g_markup_printf_escaped("<span color=\"darkred\">%s</span>", message->sMessage); gtk_label_set_markup(wLabel, sMarkup); g_free(sMarkup); // 记得释放函数返回的字符串,避免内存泄漏
额外说明
g_markup_printf_escaped的作用是对变量部分的特殊字符(如<、>、&等)转义,防止破坏markup的XML结构,标记自身的</>无需转义。- 替换固定字符串测试时,修正后的代码不会再出现多余字符,因为标记结构是合法的XML格式。
内容的提问来源于stack exchange,提问作者Michael K.
相关产品推荐
相关产品推荐

