Библиотека сайта 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).