Я пытаюсь установить стиль 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
.
Что я делаю не так?