2016-10-25 3 views
1

좋아, 나는 최근에 C로 GTK +로 프로그래밍하기 시작했다. 나는 내 코드에 GdkToggleButton을 가지고 있으며 CSS로 스타일을 추가하고 싶다. 거의 모든 GTK3 + 문서를 여기에서 읽었지만 내 경우에는 맞지 않습니다. 실제로 CSS에 관한 문서 일부가 있지만 CSS 파일을 실제로 구문 분석 할 수있는 부분을 찾을 수 없습니다.CSS 스타일링 GTK +

내가 원하는 것은 CSS 나 다른 방법으로 GdkToggleButton의 색상을 변경하는 것입니다.

나는 CSS 파일을 어디에 두어야하는지 파싱하고 위젯에 추가하는 방법을 알고 싶다.

버튼의 GdkRGBA (컬러)를 실제로 얻을 수는 있지만 변경 사항은 적용되지 않습니다. 버튼의 GdkRGBA를 변경하는 방법은 다음과 같습니다.

GdkRGBA *color ; 
GtkWidget *button; 
GtkStyleContext *context; 

color = gdk_rgba_copy (color); // I don't know to initialize GdkRGBA :(

context = gtk_widget_get_style_context(button);  
button = gtk_toggle_button_new_with_label ("Hello World"); 
gtk_style_context_get_color(context, 
          GTK_STATE_FLAG_NORMAL, 
          color); 
gdk_rgba_parse(color, 
       "red"); 

당신은 gtk_css_provider_load_from_data()과 프로그램에 포함 된 사용자 정의 CSS를로드 할 수

gtk_css_provider_load_from_path (cssProvider, 
            "/home/shadow_m2/code.css", 
            NULL); 
gtk_style_context_add_provider (context, 
            GTK_STYLE_PROVIDER(cssProvider), 
            GTK_STYLE_PROVIDER_PRIORITY_USER); // I had used wrong priority on first try 
gtk_style_context_save (context); 
+0

GtkCssProvider를 찾고 있습니다. – andlabs

+0

나는 또한 그것을 시도하고 CSS 파일을로드하지만 GtkCssProvider로 위젯 스타일을 지정하는 방법을 모른다. @andlabs –

+0

GtkCssProvider를 사용하여 메모리에서 CSS를로드 할 수 있습니다. 위젯에 적용하려면 GtkStyleContext (모든 GtkWidgets에 있음)를 참조하십시오. – andlabs

답변

1

를 해결했다. GtkCssProvider는 일반적으로 CSS를로드하는 방법입니다.

그런 다음 GtkWidget의 스타일 컨텍스트를 가져 와서 add_provider()을 호출하십시오. APPLICATION 우선 순위를 사용하십시오. 어쨌든 추가하는 것입니다 (응용 프로그램 특정 CSS).

또한 save() 호출이 필요하지 않습니다.

+0

예 내 문제가 우선적으로 사용되었습니다. 고맙습니다 –