在尝试清除有关弃用Gtk.Widget.modify_base
,Gtk.Widget.modify_font
的一些警告时,我发现建议的替换,override_background_color
(以及字体和颜色的等效项)也< / em>已弃用。我现在正在尝试研究如何为小部件提供这些样式。
字体,颜色和背景适用于自定义TextView
小部件,并且这些小部件的值作为某些首选项的一部分存储在某些字符串中,以便用户可以自定义几种不同的颜色。
对于字体和文本颜色,似乎最好的方法是使用适当的样式创建Gtk.TextTag
,并将文本缓冲区上的insert()
的任何实例更改为{{1} }。 TextBuffers和TextTags似乎没有“默认样式”概念。
但是,文本标签不会处理整个文本视图的背景。
建议的方法似乎是insert_with_tags()
,但我应该如何将这些用户指定的颜色提供给提供商?
许多示例加载字符串常量如下:
GtkStyleProvider
但是在这种情况下,每次配置更改时我都必须手动格式化并插入字符串到一大块CSS中,并将其反馈到样式中,这看起来非常混乱。我也不确定这些是否可以在加载后更改,因为似乎没有改变信号。
我想另一种方式是以某种方式继承string style = """
GtkButton {color:#ff00ea; font:Serif 12;}
GtkButton:hover {background-color:#3085a9;}
GtkLabel {background-color:#898989;}
GtkEntry {background-color:green; color:red;}
""";
CssProvider provider = new CssProvider();
provider.load_from_data(style,-1);
并实现我自己的,但这对于设置一些颜色来说似乎有些过分,而且似乎很少有文档。
大多数GTK +程序(甚至是GNOME程序)似乎只是使用GtkStyleProvider
和modify_*
的“旧”方式而忽略了弃用,而且我不清楚是否会使用少数几个CSS可以在加载后更改它。
这些只是两个选项吗?哪一个是“正确的”?