Подклассы GtkWindow
более распространены в различных языковых привязках GTK, чем в простом C. Вы не упомянули, какой язык вы использовали.
Тем не менее, я подкласс GtkWindow
в C создаю содержимое окна в Glade, но не самого окна. В Glade 3 (IIRC) вы можете щелкнуть правой кнопкой мыши виджет в палитре и выбрать «Добавить виджет как верхний уровень», чтобы разместить виджет без верхнего уровня без контейнера.
Затем напишите код для вашего подкласса GtkWindow
, назовем его MyAppWindow
. Я не буду вдаваться в подробности этого ответа, поскольку в документации GObject есть множество примеров. В функции init (my_app_window_init()
) загрузите файл Glade, используйте gtk_builder_get_object()
, чтобы получить указатель на самый внешний виджет в файле Glade, и используйте gtk_container_add()
, чтобы добавить его в создаваемое окно. Затем используйте gtk_builder_connect_signals()
как обычно.
Вы должны вручную установить все свойства окна, так как вы не можете сделать это в Glade, но, кроме того, я обнаружил, что оно работает довольно хорошо.