Наши партнеры

UnixForum





Библиотека сайта 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)
Контейнер для кнопок (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)
Сетка (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)
Набор страниц с вкладками (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)
Помощник (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).