Шаг 10 - Больше виджетов... разных и нужных

Мы уже довольно много раз применяли разного рода виджеты, создавали их, отображали и т.д. и т.п. Немного обобщу...

Все виджеты создаются функциями вида gtk_*_new. После этого устанавливаются обработчики событий, внешний вид виджета, виджет упаковывается в котейнер, (gtk_container_add или gtk_box_pack_*). После этого виджет отображается в окне функцией gtk_widget_show.

Теперь по поводу объектно-ориентированности ГТК. Эта библиотека заранее проектировалась так, чтобы быть доступной из не-объектно-ориентированных языков... Но тем не менее в ней есть иерархия классов! Эта иерархия поддерживается встроенными функцйиями... Если в C без плюсиков нет необходимости делать приведение типов, то с помощью макросов в C++ можно такое приведение выполнить... Впрочем, как залог безошибочного выполнения программы, рекомендую приведение делать всегда.

Вот примеры наиболее распространенных макросов:

Как я уже сказал, в ГТК есть иерархия классов. Кроме этой иерархии, есть еще надстройка над ГТК - GTK+, которая вообще работает только в объектных языках... Поэтому я здесь ее и не рассматриваю.. А вот иерархия:

 GtkObject
  +GtkWidget
  | +GtkMisc
  | | +GtkLabel
  | | | +GtkAccelLabel
  | | | `GtkTipsQuery
  | | +GtkArrow
  | | +GtkImage
  | | `GtkPixmap
  | +GtkContainer
  | | +GtkBin
  | | | +GtkAlignment
  | | | +GtkFrame
  | | | | `GtkAspectFrame
  | | | +GtkButton
  | | | | +GtkToggleButton
  | | | | | `GtkCheckButton
  | | | | |   `GtkRadioButton
  | | | | `GtkOptionMenu
  | | | +GtkItem
  | | | | +GtkMenuItem
  | | | | | +GtkCheckMenuItem
  | | | | | | `GtkRadioMenuItem
  | | | | | `GtkTearoffMenuItem
  | | | | +GtkListItem
  | | | | `GtkTreeItem
  | | | +GtkWindow
  | | | | +GtkColorSelectionDialog
  | | | | +GtkDialog
  | | | | | `GtkInputDialog
  | | | | +GtkDrawWindow
  | | | | +GtkFileSelection
  | | | | +GtkFontSelectionDialog
  | | | | `GtkPlug
  | | | +GtkEventBox
  | | | +GtkHandleBox
  | | | +GtkScrolledWindow
  | | | `GtkViewport
  | | +GtkBox
  | | | +GtkButtonBox
  | | | | +GtkHButtonBox
  | | | | `GtkVButtonBox
  | | | +GtkVBox
  | | | | +GtkColorSelection
  | | | | `GtkGammaCurve
  | | | `GtkHBox
  | | |   +GtkCombo
  | | |   `GtkStatusbar
  | | +GtkCList
  | | | `GtkCTree
  | | +GtkFixed
  | | +GtkNotebook
  | | | `GtkFontSelection
  | | +GtkPaned
  | | | +GtkHPaned
  | | | `GtkVPaned
  | | +GtkLayout
  | | +GtkList
  | | +GtkMenuShell
  | | | +GtkMenuBar
  | | | `GtkMenu
  | | +GtkPacker
  | | +GtkSocket
  | | +GtkTable
  | | +GtkToolbar
  | | `GtkTree
  | +GtkCalendar
  | +GtkDrawingArea
  | | `GtkCurve
  | +GtkEditable
  | | +GtkEntry
  | | | `GtkSpinButton
  | | `GtkText
  | +GtkRuler
  | | +GtkHRuler
  | | `GtkVRuler
  | +GtkRange
  | | +GtkScale
  | | | +GtkHScale
  | | | `GtkVScale
  | | `GtkScrollbar
  | |   +GtkHScrollbar
  | |   `GtkVScrollbar
  | +GtkSeparator
  | | +GtkHSeparator
  | | `GtkVSeparator
  | +GtkPreview
  | `GtkProgress
  |   `GtkProgressBar
  +GtkData
  | +GtkAdjustment
  | `GtkTooltips
  `GtkItemFactory

Выглядит впечатляюще, а? Как Вавилонская башня после ее редактирования сумасшедшим программистом в EMACS. Надеюсь, читатель мне простит, если все это мы рассматривать не будем, а только самое нужное...


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел - 06.08.2002