Я хотел бы использовать ìnstall_style_property()
Gtk.Widget на виджет, который я пишу. В документации, этот метод объявлен как static
, поэтому мне интересно, почему valac все еще жалуется, что я называю его из статического метода: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 docs). Это, вероятно, не новая проблема; методы класса довольно редки, поэтому существует, вероятно, некоторая ошибочная логика, где предполагается, что! instance == static. – nemequ