我想在我正在编写的小部件上使用Gtk.Widget的ìnstall_style_property()
。在文档,这种方法被声明为static
,所以我很奇怪,为什么华劣克仍然抱怨说,我从一个静态方法调用它:Valac不会让我从静态方法“install_style_property”
public class MyClass : Gtk.Widget {
public static void init() {
ParamSpecDouble _the_property = new ParamSpecDouble
(
"dummy", "dummy", "dummy,
0, double.MAX, 0,
ParamFlags.READWRITE | ParamFlags.STATIC_STRINGS
);
install_style_property (_the_property);
}
}
void main (string? argv) {
Gtk.init (ref argv);
MyClass.init();
}
错误消息:
test.vala:11.9-11.46: error: Access to instance member `Gtk.Widget.install_style_property' denied
如果这样做不工作,在Gtk中将自定义样式属性安装到自定义小部件的首选模式是什么?就个人而言,我不希望在使用我的小部件之前调用init()
,但是由于添加样式属性是按类而不是每个实例完成的,因此将其放入构造函数看起来不正确。
它没有标记为静态,它被标记为类。见https://git.gnome.org/browse/vala/tree/vapi/gtk+-3.0.vapi?id=48ca4e0fc480c3610e3a115376b86a1cee6c68f2#n6782 – nemequ
@nemequ那么这是一个valadoc.org问题(最近valadoc.org有很多问题,它似乎...) – andlabs
啊,我甚至没有想过看valadoc(我通常只使用vapis和c文档)。这可能不是一个新问题;类方法非常少见,所以在假定!instance == static的情况下可能存在一些错误的逻辑。 – nemequ