2016-06-03 8 views
8

Ich versuche CSS in GTK3 und ich verstehe nicht, wie bestimmte Klasse zu verwenden.Wie legt man eine bestimmte CSS-Klasse für ein Widget in gtk3 fest? (c)

C-Code:

provider = gtk_css_provider_new(); 
display = gdk_display_get_default(); 
screen = gdk_display_get_default_screen (display); 
gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER); 
gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(provider),"styles.css",NULL); 

enter_button = gtk_button_new_with_label("Print"); 
g_signal_connect(G_OBJECT(enter_button), "clicked", G_CALLBACK(print_entry_dialog),&t_data); 
gtk_box_pack_start(GTK_BOX(hbox3), enter_button, TRUE, TRUE, 0); 

Css (styles.css):

GtkButton{ 
    background: #669999; 
    text-shadow: 1px 1px 5px black; 
    box-shadow: 0px 0px 5px black; 
    border: 1px solid black; 
} 

Auf diese Weise funktioniert es: enter image description here

Aber ich will eine 'enter_button' Klasse festlegen, die setze Eigenschaften für nur das 'enter_button', nicht für alle widget unter GtkButton name.

Ich lese über gtk_style_context_add_class() func, aber ich weiß nicht, wie es mit der Datei 'styles.css' funktioniert. Was soll ich tun?

+1

die Funktion Verwenden Sie mit 'gtk_widget_get_style_context in Kombination gefunden()' https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-get-style-context – B8vrede

Antwort

9

ich auf diese Weise gelöst:

GtkStyleContext *context; 
enter_button = gtk_button_new_with_label("Print"); 
context = gtk_widget_get_style_context(enter_button); 
gtk_style_context_add_class(context,"enter_button"); 

CSS:

.enter_button{ 
    background: #669999; 
    text-shadow: 1px 1px 5px black; 
    border-radius: 3px; 
    box-shadow: 0px 0px 5px black; 
} 

Für weitere Informationen hier nachschauen: GtkStyleContext examples

Verwandte Themen