Код AIThomas работал отлично, однако, чтобы продолжить редактирование UI-файла в Glade, мне пришлось добавить файл каталога следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<glade-catalog name="test" depends="gtk+">
<glade-widget-classes>
<glade-widget-class name="IconViewSubclass" generic-name="iconviewsubclass" title="IconViewSubclass" parent="GtkIconView"/>
</glade-widget-classes>
<glade-widget-group name="test" title="test">
<glade-widget-class-ref name="IconViewSubclass"/>
</glade-widget-group>
</glade-catalog>
Я также обнаружил, что имя подкласса в Vala должно точно соответствовать имени виджета в пользовательском интерфейсе XML , т. Е. Изменение IconViewSubclass
на IconViewSubclass2
в test.vala
даст вам:
$ valac --pkg gtk+-3.0 test.vala && ./test
test.ui:14:1 Invalid object type 'IconViewSubclass'Segmentation fault
Вы также можете использовать пространство имен как часть имени класса, т.е. namespace Foo { public class Bar : Baz }
должно работать для виджета типа FooBar
в XML-файле интерфейса пользователя.