Стоит ли изучать GObject и GLib для работы с GTK?

Мне нужно разработать собственное приложение на Linux для школьного проекта. Я выбрал GTK и начал читать официальное руководство.

Сам GTK API довольно прост для понимания, но у меня проблемы с GObject и GLib, их сложно изучить, и я не знаю, почему они к ним привыкли. Стоит ли изучать GObject и GLib для работы с GTK?

Официальная документация GObject невероятно огромна. https://developer.gnome.org/gobject/stable/ И мне понадобится несколько недель, чтобы просто изучить GObject, чтобы наконец выучить GTK.


person Mathieu    schedule 12.10.2016    source источник


Ответы (1)


GTK + основан на GLib и использует свой основной цикл для обработки событий и управления памятью. Если вы пишете код на C, вы должны понимать, как работает GLib (иначе будут утечки памяти). Детали нижнего уровня объектной системы (GObject) интересны только в том случае, если вы создаете собственные виджеты.

Однако, если требования вашего проекта допускают использование Python или JavaScript, Glib / GObject сами по себе практически бесполезны, и вы можете напрямую погрузиться в GTK +.

Источник: приложения, созданные с использованием PyGObject, gtkmm и raw GTK + на C.

person Artem Vorotnikov    schedule 12.10.2016
comment
Обратите внимание, что вам также не обязательно учить абсолютно все. Вам нужны только основы и знания о том, как безопасно использовать GTK +. Это очень хороший ответ от довольно нового пользователя. Спасибо, Артем. - person oldtechaa; 12.10.2016
comment
Понимание основ GObject необходимо для понимания того, как работают некоторые из более сложных виджетов, в первую очередь GtkTreeView. Вам все еще не нужно знать достаточно, чтобы создать свой собственный объект, но вам нужно как минимум понимать, что такое свойства, сигналы и GValue. - person andlabs; 12.10.2016
comment
@andlabs, да, хотя я надеюсь, что кто-нибудь знает основы свойств и сигналов. Поскольку я занимался программированием только GTK + на Perl, мне действительно не приходилось использовать GObject напрямую. - person oldtechaa; 12.10.2016