gtkmm3.0 и Css: селектор активного состояния для состояния GtkButton без применения изменений - PullRequest
1 голос
/ 29 апреля 2020

Итак, я новичок в разработке GUI, и я просто реализую пользовательский интерфейс с C ++ в Raspbian OS, используя Gtkmm3.0 (обертка GTK для c ++). Я пытаюсь применить индивидуальный дизайн к кнопке с CSS через Gtk :: CssProvider, которая прекрасно работает.

css = Gtk::CssProvider::create();
css->load_from_path("css/theme.css");
auto ctx_mnew_session = mnew_session.get_style_context();
ctx_mnew_session->add_provider(css,GTK_STYLE_PROVIDER_PRIORITY_USER );
ctx_mnew_session->add_class("th-button");
ctx_mlast_session->context_save();

моя th-кнопка - это css определенный класс, подобный этому:

.th-button 
{
    background-color:#000000;
    color:#ffffff;
    border:solid 2px #ffffff;
    border-radius: 7px;
}
.th-button:active
{
    background-color:#ffffff;
    color:#000000;
}

Конструкция отлично подходит, но не учитывает активное состояние. Неважно, нажимаю я кнопку или нет, дизайн не меняется, хотя в справочнике Gtk + говорится, что обработчик: active обрабатывается.

Другое использование псевдоклассов должен соответствовать виджетам в зависимости от их состояния. Для состояний виджетов доступны следующие псевдоклассы: активный,: hover: отключен,: выбран,: фокус,: неопределен,: отмечен и: фон. Кроме того, следующие псевдоклассы не имеют прямого эквивалента в качестве состояния виджета:: dir (ltr) и: dir (rtl) (для направления текста),: link and :ited (для ссылок) и: drop ( активный) (для подсветки выпадающих целей). Псевдоклассы состояния виджетов могут применяться только к последнему элементу в селекторе.

Имеет ли это для вас какой-либо смысл?

Config: Raspbian OS на Raspberry Pi 4 / GTKmm 3.24 .0

Архитектура моего виджета

  • MainWindow :: Window
    • MainFrame :: Box
      • mnew_session :: Button
      • css :: CssProvider
...