The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

GTK+ 2.0 Tutorial

<<< Previous

Next >>>


Краткий обзор виджетов

Основные действия для создания GTK виджетов:

  1. gtk_*_new() - одна из функций для создания виджетов. Все они детализированы в этой секции.

  2. Соединение всех сигналов и событий, которые мы собираемся использовать, с обработчиками.

  3. Установка атрибутов виджетов.

  4. Упаковка виджетов в контейнер, используя соответствующий запрос, типа gtk_container_add() или gtk_box_pack_start().

  5. Вывод виджета на экран gtk_widget_show().

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. Это может быть очень познавательно. Фактически можно понять как работают виджеты изучая декларации функций.


<<< Previous

Home

Next >>>

Table Packing Example

 

Widget Hierarchy






Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру