Применение стиля css к Gtk :: ToolButton не работает с селектором в gtkmm - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь установить стиль css для всего приложения в gtkmm-3.0. Вот как я инициализирую и загружаю стиль:

#include "MainWindow.h"

#include <string>
#include <iostream>

const std::string style = R"(
    toolbutton {
        border-color : #000000;
        border-width : 1px;
        border-radius: 0px;
    }
)";

void loadStyle()
{
    try
    {
        auto css = Gtk::CssProvider::create();

        css->load_from_data(style);

        Gtk::StyleContext::add_provider_for_screen(
            Gdk::Screen::get_default(), css,
            GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
        );
    }
    catch(const Gtk::CssProviderError error)
    {
        std::cerr << "Failed to load style:" <<error.code() << std::endl;
    }
}

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv,"com.test");

    loadStyle();

    MainWindow window(800, 600);
    window.show_all();

    return app->run(window);
}

MainWindow - это просто Gtk :: Window с Gtk :: Toolbar с несколькими Gtk :: ToolButton.

Но по какой-то причине этот стиль вообще не применяется к моим ToolButton. Если я изменю свой селектор таблицы стилей на «выбрать все элементы», он будет применен к моим кнопкам инструментов:

* {
        border-color : #000000;
        border-width : 1px;
        border-radius: 0px;
}

Итак, я предполагаю, что мой код правильный, а селектор в моей таблице стилей неправильный. Однако в документации говорится, что GtkToolButton имеет единственный узел CSS с именем toolbutton . В настоящее время я сам не устанавливаю имена или классы, используя set_name или add_class.

Что я делаю не так?

1 Ответ

2 голосов
/ 07 мая 2020

когда мы создаем Gtktoolbutton, он фактически использует Gtkbutton. enter image description here

поэтому в вашем css, если вы добавите

toolbutton button {

, он будет работать.

gtk css может быть вроде как запутанно, так как вы не найдете подходящей документации (ну, я не смог найти очень подробный do c и все такое) .. лучше использовать GtkInspector для отладки gtk css ..

...