我试图在gtkmm-3.0中设置一个应用程序范围的css样式,我是这样初始化和加载样式的。
#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有一个名为toolbutton的CSS节点。.目前我自己并没有设置任何名称或类,使用的是 set_name
或 add_class
.
我到底做错了什么?