来自代码的CSS?如何直接从Vala使用CSS装饰?

时间:2019-01-03 11:00:43

标签: gtk gtk3 vala

如何直接从Vala使用CSS定制?与此example中的file不同。假设我希望通过单击按钮使其变为红色,而不使用外部CSS文件,因为此操作太简单了,无法创建具有单个字段的CSS文件。

我的意思是这样:

label.set_styleSheet("font-size: 17px;")

2 个答案:

答案 0 :(得分:1)

您仍然必须创建一个CssProvider,就像您链接到的代码一样:

var screen = this.get_screen ();
var css_provider = new Gtk.CssProvider();

您可以调用load_from_data ()而不是load_from_path ()来从内存中的字符串而不是文件中加载它:

https://valadoc.org/gtk+-3.0/Gtk.CssProvider.load_from_data.html

css_provider.load_from_data(".my_class { font-size: 17px; }");
Gtk.StyleContext.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER);

CSS提供程序加载了要使用的自定义样式后,您可以使用get_style_context ()操作每个Gtk +小部件。

样式上下文具有添加,删除和查询类等的方法。

https://valadoc.org/gtk+-3.0/Gtk.StyleContext.html

label.get_style_context().add_class("my_class");

由于您只需设置一次样式提供程序,因此我认为这并不会带来太多开销。

答案 1 :(得分:0)

对于正在阅读本文的任何人,我都将带有和不带有文件的示例都发布到了Git https://gitlab.com/gavr123456789/vala-css-examples/tree/master