问题描述
我有一个 vala 应用程序,我想设置标签窗口对象的样式,我尝试了以下操作:
public Object createConfirm(){
var window = new Gtk.Window ();
var grid = new Gtk.Grid () {
orientation = Gtk.Orientation.VERTICAL,column_spacing = 6,row_spacing = 6
};
window.add(grid);
window.title = "Shutdown Confirmation";
window.border_width = 10;
window.window_position = Gtk.WindowPosition.CENTER;
window.set_default_size (350,80);
window.destroy.connect (Gtk.main_quit);
var label = new Gtk.Label(null);
var label_text = "Are you sure to turn off Now?";
label.set_markup("<b>"+label_text+"</b>");
...
那样 label.set_markup
仅成功地将标签文本加粗。当我尝试 set_markup("<h3>"+label_text+"</h3>")
或 set_markup("<span style=\"color:red\">"+label_text+"</span>")
或使用除 <b>
以外的任何标签时,它不会在标签窗口上返回任何字符串。为什么会发生?是否有一个简单的解决方案,我不必使用任何额外的依赖项?
解决方法
如果您不需要动态更改样式值,推荐的标签(和所有其他小部件)样式的方法是使用 CSS。
在您的应用启动代码中,您可以从 CSS 文件创建应用范围的 Gtk.CssProvider。然后,在构建小部件时,使用 label.get_style_context().add_class()
向标签添加样式类。
标记语言看起来像 HTML,但实际上不是。 Here is a guide to the available tags and attributes。最值得注意的是,这里没有 CSS,文本样式是使用 <span>
元素上的属性添加的。