Css 无法设置";“样式属性”;在GTK3中

Css 无法设置";“样式属性”;在GTK3中,css,c,properties,gtk,Css,C,Properties,Gtk,我正在尝试设置小部件的样式属性(在windows上使用C编码),但它不起作用: 我试着输入css文件 * { -GtkButton-child-displacement-y: 20; } 但它不起作用,我还尝试在xml文件中设置它,将此属性添加到GtkButton <property name='child-displacement-y'>20</property> 20 它不起作用(无效属性)我想样式属性不能与属性一起设置 那么,我做错了什么?为什么css

我正在尝试设置小部件的样式属性(在windows上使用C编码),但它不起作用:

我试着输入css文件

* {
    -GtkButton-child-displacement-y: 20;
}
但它不起作用,我还尝试在xml文件中设置它,将此属性添加到GtkButton

<property name='child-displacement-y'>20</property>
20
它不起作用(无效属性)我想样式属性不能与属性一起设置

那么,我做错了什么?为什么css文件忽略特定于小部件的样式属性


(windows上的GTK+3.18版)

GtkButton::child-displacement-y
现在从GTK+3.20开始被忽略。你的CSS无论如何都不会再工作了。它可能已经在3.18中被打破了。对不起。:/文档建议使用CSS边距和填充


也就是说,否则你的CSS是正确的。我想你只是没有正确加载它。你不能仅仅删除一个随机的.css文件,然后期望它工作;您需要使用GtkCssProvider将其显式加载到GtkStyleContext(属于小部件的上下文或默认GDKSscreen的上下文,以便将其应用于所有小部件)。(如果要直接修改主题文件,请参见第一段。)

如果属性缺少单位,请尝试将px附加到
20
。另外,您可以直接使用代码而不是在此处进行设置,但当然更喜欢按照您的意愿进行,因为它更易于维护。样式属性不采用单位,此属性采用
gint
guint
(即使我添加
px
,也不起作用)您确定,这是一种glib类型吗,css可能会有点不同。文档说明了什么?是的,我可以在.c文件中使用
gint
fine,因为我包括Gtk库,文档说明使用样式属性,您只需执行
-名称空间样式属性:value
在css文件中,但它不起作用。您是如何加载css文件的?我正在加载css文件以及css提供程序、显示和屏幕。。。这不仅仅是关于child-displacement-y,而是关于所有小部件样式的属性,它们不起作用。。此外,CSS中的边距在GTK 3.18.6中不起作用/@RedStar花了一段时间才将小部件转换为新的“CSS小工具”/“间接”渲染模型,这正是CSS边距等工作的原因。大多数典型的小部件现在应该可以工作了,但是如果您仍然发现任何不能工作的小部件,那么就提交一个bug(甚至可能提交一个补丁!)请求将其转换。