2017-06-05 80 views
6

Ben renkli arka plan/metin içeren bir birleşik giriş kutusu oluşturmak için bu kodu kullanıyorum:GTK2'de GTKListStore/GTKComboBox'un arka planını nasıl ayarlayabilirim?

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); 

ve çalışıyor. Şöyle görünüyor: enter image description here

Sorum şu ki, liste deposunun arka planını veya açılan kutuyu, resimde görüldüğü gibi boşluk bırakmayacak şekilde nasıl ayarlayabilirim? Teşekkürler!

cevap

2

Numix temasını kullanıyorum, böylece "kenarlık" kırmızı. İşte sonuç var

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

Ve burada tam kaynak kodu: Sen tema stilleri geçersiz kılmak için css kullanabilirsiniz https://pastebin.com/wDeUpb8A

Ayrıca GtkInspector bakmak, bir kullanışlı bir araçtır böyle amaçlar için.

+1

Bu sadece GTK3 için çalışmıyor mu? Bir şeyi yanlış anlamış olursam özür dilerim. –

+0

Yanıt güncellendi, GTK 3.22 kullanıyorum. – AndreLDM

+0

Lütfen, GTK'nın kullanımdan kaldırılmış bir sürümünü kullandığınız konusunda açık bir şekilde belirtin, sadece bir etiketin gözden kaçırılması kolaydır. – AndreLDM