Библиотека сайта rus-linux.net
Программирование с использованием gtkmm 3. Контейнерные виджеты
Оригинал: Programming with gtkmm 3
Авторы: Murray Cumming, Bernhard Rieder, Jonathon Jongsma, Ole Laursen, Marko Anastasov, Daniel Elstner, Chris Vine, David King, Pedro Ferreira, Kjell Ahlstedt
Перевод: А.Панин
8.2.4. Контейнеры для кнопок (ButtonBoxes)
Контейнеры для кнопок предоставляют простой способ быстрой упаковки группы кнопок. Ориентация этих контейнеров может быть как горизонтальной, так и вертикальной.
Контейнеры для кнопок позволяют придать приложениям унифицированный вид, так как они используют такие стандартные параметры, как промежутки между кнопками, а также параметры упаковки.
Кнопки добавляются в контейнеры для кнопок с помощью метода add().
Контейнеры для кнопок поддерживают несколько стилей размещения кнопок. Стиль может быть получен с помощью метода get_layout() и впоследствии модифицирован с помощью метода set_layout().
8.2.4.1. Пример
Рисунок 8-9: Контейнер для кнопок (ButtonBox)
Файл examplewindow.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplebuttonbox.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplewindow.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл main.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplebuttonbox.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
8.2.5. Сетка (Grid)
Сетка позволяет динамически размещать дочерние виджеты с упорядочиванием по строкам и столбцам. Размеры сетки не должны указываться при использовании конструктора.
Дочерние виджеты могут растягиваться на множество строк или столбцов путем использования метода attach() или путем размещения виджета рядом с уже размещенным виджетом в сетке с помощью метода attach_next_to(). Для отдельных строк и столбцов сетки может быть принудительно установлена равная высота и ширина с помощью методов set_row_homogeneous() и set_column_homogeneous().
Вы можете установить параметры выравнивания (margin) и расширения (expand) дочерних виджетов для того, чтобы управлять использованием пустого пространства и поведением виджетов при изменении размеров сетки.
8.2.5.1. Пример
В данном примере создается окно с тремя кнопками, размещенными с использованием сетки. Первые две кнопки располагаются в верхней строке слева направо. Третья кнопка привязана к первой кнопке, расположена под ней в строке ниже и расширена на два столбца.
Рисунок 8-10: Сетка (Grid)
Файл examplewindow.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplewindow.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл main.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
8.2.6. Таблица (Table)
Виджет, представленный классом Gtk::Table, позволяет размещать виджеты в сетке, аналогично виджету, представленному классом Gtk::Grid.
Класс Gtk::Table отмечен как устаревший начиная с версии 3.4 gtkmm и не должен использоваться в новом коде. Вместо него следует использовать класс Gtk::Grid.
8.2.7. Набор страниц с вкладками (Notebook)
Набор страниц с вкладками представляет собой набор контейнеров, каждый из которых может содержать виджеты. Вкладки с надписями позволяют пользователю выбирать страницы. Наборы страниц с вкладками позволяют размещать по нескольку наборов виджетов в ограниченном пространстве, показывая одну страницу в любой момент времени. Данные виджеты, к примеру, обычно используются для реализации диалогов настроек.
Методы append_page(), prepend_page() и insert_page() могут использоваться для добавления страниц и соответствующих им вкладок в виджет наборов страниц с вкладками путем передачи дочернего виджета и названия для вкладки.
Для выявления видимой на данный момент страницы следует использовать метод get_current_page(). Этот метод возвращает номер страницы, а вызов метода get_nth_page() с передачей этого номера позволяет получить указатель на сам дочерний виджет страницы.
Для программного изменения выбранной страницы может использоваться метод set_current_page().
8.2.7.1. Пример
Рисунок 8-11: Набор страниц с вкладками (Notebook)
Файл examplewindow.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplewindow.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл main.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
8.2.8. Помощник (Assistant)
Помощник позволяет разделить сложную операцию на этапы. Каждый этап представляется страницей, содержащей заголовок, дочерний виджет и рабочее пространство. Рабочее пространство помощника содержит кнопки для перехода между страницами, которые изменяют свое состояние автоматически в зависимости от типа страницы, установленного с помощью метода set_page_type().
Методы append_page(), prepend_page() и insert_page() позволяют добавлять страницы помощника, передавая дочерний виджет для каждой из страниц.
Для установления видимой на данный момент страницы следует использовать метод get_current_page() и использовать возвращенный результат при вызове метода get_nth_page(), который, в свою очередь, вернет указатель на сам виджет. Для программного изменения текущей страницы следует использовать метод set_current_page().
Для установки заголовка страницы следует использовать метод set_page_title(). Изображения заголовка и боковой панели могут быть установлены с помощью методов set_page_header_image() и set_page_side_image().
Для добавления виджетов в рабочую область следует использовать метод add_action_widget(). Они должны быть упакованы рядом со стандартными кнопками. При этом для удаления виджетов следует использовать метод remove_action_widget().
8.2.8.1. Пример
Рисунок 8-12: Помощник (Assistant)
Файл exampleassistant.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplewindow.h (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл examplewindow.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл exampleassistant.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл main.cc (Для использования совместно с gtkmm 3, а не с gtkmm 2)
Следующий раздел : Виджет древовидного представления данных (TreeView).
