GTK+ 2.0 Tutorial |
||
---|---|---|
Основные действия для создания GTK виджетов:
gtk_*_new() - одна из функций для создания виджетов. Все они детализированы в этой секции.
Соединение всех сигналов и событий, которые мы собираемся использовать, с обработчиками.
Упаковка виджетов в контейнер, используя соответствующий запрос, типа gtk_container_add() или gtk_box_pack_start().
gtk_widget_show() позволяет GTK выводить виджеты согласно установленным атрибутам. Для скрытия виджетов можно использовать gtk_widget_hide. Порядок вывода виджетов на экран не важен, но лучше выводить основное окно последним чтобы все виджеты в окне отображались одновременно, а не появлялись по мере их формирования. Дочерние виджеты не отображаются до тех пор, пока не показано основное для них окно с помощью функции gtk_widget_show().
GTK использует систему преобразования типов. Она всегда использует макросы для проверки преобразования, перед тем как выполнить его. Вот некоторые из них:
G_OBJECT (object)
GTK_WIDGET (widget)
GTK_OBJECT (object)
GTK_SIGNAL_FUNC (function)
GTK_CONTAINER (container)
GTK_WINDOW (window)
GTK_BOX (box)
|
Все они используются как аргументы функций. Вы видели их в примерах при простом использовании в декларациях функций.
Как вы можете увидеть ниже в иерархии классов, все GtkWidgets образованы из базового класса GObject. Это значит, что в любом месте где функция запрашивает виджет типа объект, вы можете использовать макрос G_OBJECT().
g_signal_connect( G_OBJECT (button), "clicked",
G_CALLBACK (callback_function), callback_data);
|
Здесь кнопка преобразуется в объект, и выполняется преобразование указателя функции в обратный вызов.
Многие виджеты являются контейнерами. Если вы посмотрите в иерархии классов ниже, то заметите, что много виджетов происходят из контейнерного класса. Любой из этих виджетов может использоваться с макросом GTK_CONTAINER, чтобы передать их в функции, которые запрашивают контейнеры.
К сожалению невозможно рассказать о всех макросах в данном руководстве, поэтому я рекомендую вам изучить заголовочные файлы GTK (header files) или GTK API reference manual. Это может быть очень познавательно. Фактически можно понять как работают виджеты изучая декларации функций.
Table Packing Example |
|
Widget Hierarchy |