2013-01-19 15 views
6

qualcuno può digitare un semplice esempio per lo styling di un widget GTK + con css? Non riuscivo a capire come farlo guardando la documentazione:Come stile GTK + con CSS personalizzati?

#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

Ho fatto tentativi, aggiungerò quello che ho attualmente – user1502482

+0

Che problemi si verificano con quel codice? –

+0

La compilazione wise, l'argomento 2 passato in gtk_style_context_add_provider non è corretto. Richiede GtkStyleProvider e ho fornito GtkCssProvider e non ho idea di come ottenere un GtkStyleProvider – user1502482

risposta

1

Non so una sola cosa su stile CSS in GTK3 (tranne che spesso rompe come gli sviluppatori preferiscono sistemare le cose - di rispettare la Standard CSS - di mantenere la compatibilità attraverso le versioni).

Tuttavia, posso dirvi che questo è sbagliato:

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

cosa si vuole veramente che si fermi GTK quando la finestra principale è chiusa. Questo viene fatto in questo modo:.

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

Un'altra osservazione è che si sta chiamando

gtk_widget_show(window); 
gtk_widget_show(button); 

Quando l'albero widget è stato completato (vale a dire, è stata interrotta l'aggiunta di widget in dei contenitori e dei contenitori in la finestra di primo livello), questo può essere semplificata in:

gtk_widget_show_all(window); 

si prega di notare anche che un programma che ha lavorato dovrebbe restituire 0 in caso di successo, e utilizzare valori diversi da zero tor segnalare errori.

+2

Questo non risponde alla domanda – user877329