2013-01-19 22 views
6

Birisi, bir GTK + widget'ını css ile şekillendirmek için basit bir örnek oluşturabilir mi? Ben docs bakarak bunu nasıl çözemedim:GTK +, özel CSS ile nasıl şekillendirilir?

#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

Denemeler yapıyorum, şu anda sahip olduğum şeyi ekleyeceğim – user1502482

+0

Bu kodla ilgili sorunlarınız mı var? –

+0

Akıllıca derleme, gtk_style_context_add_provider içine geçirilen argüman 2 doğru değil. GtkStyleProvider gerektirir ve GtkCssProvider sağladı ve bir GtkStyleProvider – user1502482

cevap

1

GTK3 (CSS stil hakkında tek bir şey bilmiyor musunuz haricinde genellikle geliştiriciler şeyleri düzeltmek için tercih olarak keser o - saygı CSS standartları - versiyonlardan uyumluluğundan daha iyidir.

Ancak, ben bunun yanlış olduğunu söyleyebilirim:

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

gerçekten ana penceresi kapatıldığında bu GTK durdurmak istiyor ne. Bu böyle yapılır:.

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

Başka sözler widget'ları ağaç tamamlandığında size

gtk_widget_show(window); 
gtk_widget_show(button); 

aradığınız olmasıdır (yani sen kaplarda widget'lar ve konteyner ekleyerek durdu

gtk_widget_show_all(window); 

Lütfen aynı başarıyı 0 dönmek ve rapor hataları tor sıfırdan farklı değerler kullanmalıdır çalışan bir programdır: toplevel pencere), bu işe basitleştirilmiş olabilir.

+2

Bu soruya cevap vermiyor – user877329