2017-02-19 111 views
1

我为我的程序制作了一个简单的glade UI文件。它包含2个文本框和1个按钮。而且我做了一个包含1个名为“button”的按钮类的css样式。当我在Glade中将此文件添加为“自定义CSS提供程序”时,它在编辑器中更改了我的按钮样式。GTK + Glade和CSS

之后,我使用GtkBuilder创建了UI(我正在使用GTK#3.20绑定+ C#)。

Builder b = new Builder(); 
b.AddFromFile ("login.xml"); 
b.Autoconnect (this); 

它创建了我的简单表单(2个字段和1个按钮),但没有应用CSS样式。所以,我检查了我的UI文件的XML代码,并发现有对CSS没有参考exept的是:

<style> 
     <class name="button"/> 
</style> 

后,我读,我需要CssProvider。所以我创建了一个。

CssProvider css = new CssProvider(); 
css.LoadFromPath ("ui_common.css"); 

但是什么也没有发生。那么,我应该如何将自定义CSS应用到我的Builder UI?

回答

3

你几乎在那里;最后一步是采用GtkCssProvider并将其添加到GtkStyleContext。

由于您使用的是.ui文件和.css文件,我假设您希望将CSS应用于应用程序中的所有小部件。在这种情况下,您可以使用gtk_style_context_add_provider_for_screen(),通过gdk_screen_get_default()作为GdkScreen。 (这应该是安全的;这是GTK + Inspector的作用,IIRC有一个更具体的原因,为什么这应该是安全的...)

您也可以使用gtk_widget_get_style_context()gtk_style_context_add_provider()对单个小工具执行此操作。

在这两种情况下,都使用GTK_STYLE_PROVIDER_PRIORITY_APPLICATION作为应用程序本地CSS的优先级。

(我不知道C#的名字;对不起)

+0

噢,我的天啊,谢谢!有用!真的很感谢你的回答! –