2013-01-19 36 views
6

क्या कोई व्यक्ति सीएसएस के साथ जीटीके + विजेट स्टाइल करने के लिए एक साधारण उदाहरण टाइप कर सकता है? मैं इसे कैसे करना है यह पता लगाने नहीं कर सकता डॉक्स पर देख रहे हैं:कस्टम सीएसएस के साथ जीटीके + कैसे स्टाइल करें?

#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

मैं प्रयास कर रहा हूं, मैं जो जोड़ रहा हूं उसे जोड़ दूंगा – user1502482

+0

आप उस कोड के साथ क्या समस्याएं हैं? –

+0

संकलित बुद्धिमान, gtk_style_context_add_provider में पारित तर्क 2 सही नहीं है। इसके लिए GtkStyleProvider की आवश्यकता है और मैंने GtkCssProvider प्रदान किया है और मुझे नहीं पता कि GtkStyleProvider – user1502482

उत्तर

1

GTK3 (में सीएसएस स्टाइल के बारे में एक भी बात पता नहीं है सिवाय यह अक्सर टूट जाता है कि डेवलपर्स चीजें ठीक करने के लिए पसंद करते हैं के रूप में - सम्मान करने के लिए सीएसएस मानकों - संस्करणों के माध्यम से संगतता रखने की तुलना में)।

हालांकि, मैं आपको बता सकता है कि यह गलत है:

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

क्या तुम सच में यह जीटीके को रोकने के लिए जब मुख्य विंडो बंद कर दिया है चाहता हूँ। यह इस तरह से किया जाता है:।

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

एक और टिप्पणी है कि आप कॉल कर रहे

gtk_widget_show(window); 
gtk_widget_show(button); 

जब विगेट्स पेड़ पूरा हो चुका है है (यानी, आप कंटेनरों में विजेट और में कंटेनर जोड़ने बंद कर दिया उच्चस्तरीय विंडो), इस सरल किया जा सकता में:

gtk_widget_show_all(window); 

कृपया ध्यान दें कि यह व्यवस्था काम सफलता पर 0 लौटना चाहिए, और रिपोर्ट त्रुटियों टो ग़ैर शून्य मान का उपयोग करें।

+2

यह सवाल का जवाब नहीं देता है – user877329