2017-06-05 10 views
6

मैं रंग का पृष्ठभूमि/पाठ के साथ एक कॉम्बो बॉक्स बनाने के लिए इस कोड का उपयोग कर रहा:मैं GTK2 में GTKListStore/GTKComboBox की पृष्ठभूमि कैसे सेट कर सकता हूं?

GtkListStore *liststore; 
GtkWidget *combo; 
GtkCellRenderer *column; 
liststore = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); 
for(int i=0; i<10; i++) { 
    gtk_list_store_insert_with_values(liststore, NULL, -1, 0, "Default", 1, "white", 2, "black", -1); 
} 
combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(liststore)); 
g_object_unref(liststore); 
column = gtk_cell_renderer_text_new(); 
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), column, TRUE); 
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), column, "text", 0, "foreground", 1, "background", 2, NULL); 

और यह काम करता है। ऐसा लगता है: enter image description here

मेरा सवाल यह है कि, मैं सूची स्टोर या कॉम्बो बॉक्स की पृष्ठभूमि कैसे सेट कर सकता हूं ताकि तस्वीर में दिखाई देने वाली कोई सफेद जगह न हो? धन्यवाद!

उत्तर

2

मैं न्यूमिक्स थीम का उपयोग कर रहा हूं, इसलिए "सीमा" लाल है। आप विषय शैलियों को ओवरराइड करने सीएसएस का उपयोग कर सकते हैं:

GtkCssProvider *provider; 

provider = gtk_css_provider_new(); 
gtk_css_provider_load_from_data (provider, "menuitem { background: #000; } menuitem:hover { background: #FFF; } .combo { background: #000; }", -1, NULL); 
gtk_style_context_add_provider (
    GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (combo))), 
    GTK_STYLE_PROVIDER (provider), 
    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 

gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (combo), 
              GTK_STYLE_PROVIDER (provider), 
              GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 
g_object_unref (provider); 

यहाँ परिणाम है: screenshot

और यहाँ पूर्ण स्रोत कोड है: https://pastebin.com/wDeUpb8A

इसके अलावा GtkInspector पर एक नज़र डालें, यह एक आसान उपकरण है ऐसे उद्देश्यों के लिए।

+1

क्या यह केवल GTK3 के लिए काम नहीं करता है? क्षमा करें अगर मैं कुछ गलत समझ रहा हूं। –

+0

उत्तर अद्यतन, मैं जीटीके 3.22 का उपयोग कर रहा हूँ। – AndreLDM

+0

कृपया इस प्रश्न में स्पष्ट करें कि आप जीटीके के बहिष्कृत संस्करण का उपयोग कर रहे हैं, बस एक टैग को नजरअंदाज करना आसान है। – AndreLDM

संबंधित मुद्दे

 संबंधित मुद्दे