首页 > 解决方案 > 修改小部件 C++ GTK 的 css

问题描述

我正在尝试编辑树视图模型(列表存储)的 css,我已经使用此代码设置了所有内容,并且效果很好:

auto css_provider = Gtk::CssProvider::create();
css_provider->load_from_path("style.css");

Gtk::StyleContext::add_provider_for_screen
                    (Gdk::Screen::get_default(), css_provider, 
                    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

此代码成功加载到 css 文件中,我可以更改树视图的某些属性,我测试了填充并且工作正常,它将填充应用于列表存储中的每一行:

treeview.view {
    padding: 20px;
}

或者

treeview * {
    margin: 10px;
}

但是,如果我尝试引用树视图的名称,它就不起作用(没有错误或警告):

#m_TreeView {           /* or m_TreeView.view */
    padding: 20px;
}

我的主要目标是在每行之间应用边距,但这似乎也不起作用(没有错误或警告),我想对每一行应用边距,但引用树视图的特定名称,就像我有我的应用程序中的多个树视图:

treeview.view {
    margin: 20px;
}

尝试访问行并尝试访问列表存储子项 (*):

treeview row {
    margin: 10px;
}

+

liststore * {
    margin: 10px;
}

标签: c++gtkgtkmm

解决方案


但是,如果我尝试引用树视图的名称,它就不起作用(没有错误或警告):

您需要的名称不是变量名称。要为 CSS 样式命名,您可以通过调用来设置它

void Gtk::Widget::set_name  (   const Glib::ustring &   name    )   

推荐阅读