Как я могу установить фон GTKListStore / GTKComboBox в GTK2?

Я использую этот код для создания поля со списком с цветным фоном / текстом:

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

и это работает. Это выглядит так:
введите описание изображения здесь

У меня вопрос, как я могу установить фон списка списков или поля со списком, чтобы не было пробелов, как видно на картинке?
Спасибо!

6

Решение

Я использую тему Numix, поэтому «рамка» красная. Вы можете использовать css для переопределения стилей темы:

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

Вот результат:
Скриншот

А вот и полный исходный код:
https://pastebin.com/wDeUpb8A

Также взгляните на GtkInspector, это удобный инструмент для таких целей.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]