2017-02-19 6 views
1

내 programm에 간단한 glade UI 파일을 만들었습니다. 2 개의 텍스트 필드와 1 개의 버튼이 있습니다. 또한 "button"이라는 버튼 클래스가 포함 된 CSS 스타일을 만들었습니다. Glade에서이 파일을 "Custom CSS provider"로 추가하면 편집기 내에서 버튼 스타일이 변경되었습니다.GTK + Glade 및 CSS

그런 다음 GtkBuilder (GTK # 3.20 바인딩 + C# 사용)를 사용하여 UI를 만들었습니다.

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

내 간단한 양식 (2 개의 필드와 1 개의 버튼)이 만들어졌지만 적용된 CSS 스타일이 없습니다. 그래서 난 내 UI 파일의 XML 코드를 확인하고이의 exept CSS에 대한 참조가 없다는 것을 발견 : 나는 CssProvider이 필요하다는 것을 읽어 그 후

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

가. 그래서 나는 하나를 창조했다.

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

아무 일도 없었습니다. 그렇다면 Builder UI에 사용자 정의 CSS를 어떻게 적용해야합니까?

답변

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()을 사용하여 개별 위젯에이 작업을 수행 할 수도 있습니다.

두 경우 모두 응용 프로그램 로컬 CSS의 우선 순위로 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION을 사용하십시오.

(저는 C# 이름을 알지 못합니다. 죄송합니다.)

+0

오 세상에, 고마워! 그것은 작동합니다! 정말 감사드립니다! –