@jenya92

Почему в приложении gtk работает только одно свойство стилей css?

Решил попробовать свои силы в построении оконного приложения с помощью GTK3. Создаю окно и подключаю к ему стили следующим образом:
GtkCssProvider *cssProvider = gtk_css_provider_new();
    if(gtk_css_provider_load_from_path(cssProvider, "cpp/test/style.css", NULL)){
        gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    }
    
    else
        g_printerr ("Ошибка открытия файла стилей");

    builder = gtk_builder_new ();
    if (gtk_builder_add_from_file (builder, "cpp/test/window.ui", &error) == 0){
        g_printerr ("Error loading file: %s\n", error->message);
        g_clear_error (&error);
        return 1;
    }

И к ему прикрутил для проверки файл стилей:
window{
    background-color: Peru;
}


GtkButton {
    background-color: red;
}

#OneLvl{
    background-color: red;
    color: white;
    font-weight: bold;
    font-size: 50px;
}


Но из этого файла стилей работают только свойства для window, ни один другой блок стилей не работает. В чём может быть проблема? Сами элементы с нужными ID есть в файле window.ui, но почему свойства к ним не применяются - понять не могу.
  • Вопрос задан
  • 514 просмотров
Решения вопроса 1
TonyHunt
@TonyHunt
Part-time developer – full-time geek.
1. Глобальная тема Вашего окружения Десктопа может иметь приоритет и отображать только то, чтобы не испортить "внешний вид приложения". То есть банально отключать Х свойства. Проверяется сменой темы.
2. Применяетеся последнее свойство, как и в мире веба, перезатирая предыдущее (аналогичное).
3. CSS под Gtk отличается от CSS Web, нужно изучать API глубже.
4. Возможно стоило использовать точку перед названием, а не решётку.
5. Посмотрите примеры на гитхабе или https://gitlab.com/gavr123456789/vala-css-examples...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы