2013-01-19 6 views
6

kann jemand ein einfaches Beispiel für das Styling eines GTK + -Widgets mit CSS eingeben? Ich kann nicht herausfinden, wie es in der Dokumentation zu tun suchen:Wie style GTK + mit benutzerdefinierten CSS?

#include <gtk/gtk.h> 
int main(int argc,char *argv[]) 
{ 
    gtk_init(&argc,&argv); 
    GtkWidget *window; 
    GtkWidget *button; 
    GtkCssProvider *cssProvider; 

    gtk_css_provider_load_from_path(cssProvider,"./gtkExample2.css",NULL); 

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    button = gtk_button_new_with_label("GTK Button"); 

    gtk_style_context_add_provider(gtk_widget_get_style_context(window),cssProvider,GTK_STYLE_PROVIDER_PRIORITY_USER); 

    g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window); 

    gtk_container_set_border_width(GTK_CONTAINER(window),20); 
    gtk_container_add(GTK_CONTAINER(window),button); 

    gtk_widget_show(window); 
    gtk_widget_show(button); 

    gtk_main(); 
    return 1; 
} 
+0

Ich habe Versuche gemacht, ich füge hinzu, was ich gerade habe – user1502482

+0

Welches Problem (s) hast du mit diesem Code? –

+0

Kompilieren weise, Argument 2 übergeben in gtk_style_context_add_provider ist nicht korrekt. Es erfordert GtkStyleProvider und ich stellte GtkCssProvider zur Verfügung und ich habe keine Ahnung, wie man einen GtkStyleProvider erhält. – user1502482

Antwort

1

Sie eine einzige Sache, über CSS-Styling in GTK3 nicht wissen (außer, dass es bricht oft als die Entwickler liebe Dinge zu reparieren - respektieren die CSS-Standards - als Kompatibilität durch Versionen halten).

Aber ich kann Ihnen sagen, dass dies falsch ist:

g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window); 

Was Sie wollen es wirklich GTK zu stoppen, wenn das Hauptfenster geschlossen ist. Dies wird wie folgt durchgeführt:.

g_signal_connect(window,"destroy", G_CALLBACK(gtk_main_quit), NULL); 

Eine weitere Anmerkung ist, dass Sie

gtk_widget_show(window); 
gtk_widget_show(button); 

sind aufrufen Wenn die Widgets Baum abgeschlossen ist (dh gestoppt Sie Widgets in den Behältern das Hinzufügen und die Behälter in dies kann die Toplevel-Fenster), werden in vereinfachter:

gtk_widget_show_all(window); 

Bitte beachten Sie auch, dass ein Programm, das gearbeitet sollte bei Erfolg 0 zurück und verwenden nicht-Null-Wert tor Bericht Fehler.

+2

Dies beantwortet die Frage nicht – user877329