краткий обзор
виджетов
основные действия
для создания gtk виджетов:
gtk_*_new() - одна из
функций для создания виджетов. все они
детализированы в этой секции.
соединение всех
сигналов и событий, которые мы собираемся
использовать, с обработчиками.
установка атрибутов
виджетов.
упаковка виджетов
в контейнер, используя соответствующий
запрос, типа gtk_container_add() или
gtk_box_pack_start().
вывод виджета на
экран 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. это
может быть очень познавательно. фактически
можно понять как работают виджеты изучая
декларации функций.
|