2011-10-26 2 views
1

GTK 스타일의 클래스의 텍스트 색상을 얻으려고합니다. 위젯 경로와 속성을 가져올 클래스가있는 GtkStyleContext가 있습니다. GTK3 : 스타일의 클래스 속성 얻기

GtkWidgetPath* widgetPath = gtk_widget_path_new(); 
gtk_widget_path_append_type(widgetPath, GTK_TYPE_WINDOW); 
gtk_widget_path_iter_set_name(widgetPath, -1 , "UnityPanelWidget"); 

GtkStyleContext *context = gtk_style_context_new(); 
gtk_style_context_set_path(context, widgetPath); 
gtk_style_context_add_class(context, "gnome-panel-menu-bar"); 
gtk_style_context_add_class(context, "unity-panel"); 

나는 gtk_style_context_lookup_color를 사용하고는 일반 텍스트 색상하지만 그놈 패널 메뉴 바 또는 연합 패널의 텍스트 색을 가져옵니다.

GtkCssProvider를 사용해 보았지만 내가 추가 한 클래스가없는 일반 스타일을 얻습니다.

Qt 응용 프로그램에서 네이티브 GTK3 디자인을 사용하고 있습니다. 이 코드는 GTK 응용 프로그램에서 올바르게 작동합니다.

감사합니다.

답변

0

Qt가 Gtk2를 사용하고 Gtk3을 사용하지 않으므로 위의 코드를 사용할 수 없다는 것을 알고있는 한. 이것은 당신이 유사한 메시지와 함께 코어 덤프를 얻을 것을 의미합니다 :

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in 
the same process is not supported 

당신은 사랑하는 과정에서 GTK의 3 libs와 액세스하여 해키 뭔가를 할 수 있지만, 해킹 수 있습니다.

+0

Qt에서 다른 스타일을 사용하여 동일한 프로세스에서 Gtk2 및 Gtk3을 실행하는 오류를 피할 수 있었으므로 Qt로 Gtk3을 실행할 수있었습니다. 나는 몇 번의 해킹을 끝내었다. 어쨌든 회신 해 주셔서 감사합니다! –