c++ combobox gtk background-color gtk2

c++ - ¿Cómo puedo establecer el fondo de una GTKListStore/GTKComboBox en GTK2?



background-color (1)

Estoy usando este código para crear un cuadro combinado con fondo de color / texto:

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

y funciona. Se parece a esto:

Mi pregunta es, ¿cómo puedo establecer el fondo del almacén de listas o el cuadro combinado para que no haya espacios en blanco como se ve en la imagen? ¡Gracias!


Estoy usando el tema de Numix, por lo que el "borde" es rojo. Puede usar css para anular los estilos de tema:

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

Aquí está el resultado:

Y aquí está el código fuente completo: https://pastebin.com/wDeUpb8A

También eche un vistazo a GtkInspector , es una herramienta útil para tales fines.