GtkCellLayout
GtkCellLayout — Интерфейс для размещения ячеек
Функции
| void | (*GtkCellLayoutDataFunc) () |
| void | gtk_cell_layout_pack_start () |
| void | gtk_cell_layout_pack_end () |
| GtkCellArea * | gtk_cell_layout_get_area () |
| GList * | gtk_cell_layout_get_cells () |
| void | gtk_cell_layout_reorder () |
| void | gtk_cell_layout_clear () |
| void | gtk_cell_layout_set_attributes () |
| void | gtk_cell_layout_add_attribute () |
| void | gtk_cell_layout_set_cell_data_func () |
| void | gtk_cell_layout_clear_attributes () |
Типы и значения
| GtkCellLayout | |
| struct | GtkCellLayoutIface |
Иерархия объектов
GInterface ╰── GtkCellLayout
Предварительные условия
GtkCellLayout требует GObject.
Известные реализации
GtkCellLayout реализован в GtkAppChooserButton, GtkCellArea, GtkCellAreaBox, GtkCellView, GtkComboBox, GtkComboBoxText, GtkEntryCompletion, GtkIconView и GtkTreeViewColumn.
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkCellLayout — это интерфейс, который должны реализовывать все объекты, желающие предоставить API, подобный GtkTreeViewColumn, для размещения ячеек, задания атрибутов и функций данных.
Одной из заметных функций, предоставляемых реализациями GtkCellLayout, являются атрибуты. Атрибуты позволяют задавать свойства гибкими способами. Они могут просто устанавливаться в постоянные значения, как обычные свойства. Но они также могут быть сопоставлены с столбцом базовой модели дерева с помощью gtk_cell_layout_set_attributes(), что означает, что значение атрибута может изменяться от ячейки к ячейке при их отрисовке обработчиком ячейки. Наконец, можно указать функцию с помощью gtk_cell_layout_set_cell_data_func(), которая вызывается для определения значения атрибута для каждой отрисовываемой ячейки.
GtkCellLayouts как GtkBuildable
Реализации GtkCellLayout, которые также реализуют интерфейс GtkBuildable (GtkCellView, GtkIconView, GtkComboBox, GtkEntryCompletion, GtkTreeViewColumn) принимают GtkCellRenderer объекты в качестве элементов <child> в определениях пользовательского интерфейса. Они поддерживают пользовательский элемент <attributes> для своих дочерних элементов, который может содержать несколько элементов <attribute>. Каждый элемент <attribute> имеет атрибут name, который указывает свойство обработчика ячейки; содержимое элемента — это значение атрибута.
Вот пример фрагмента определения пользовательского интерфейса, задающего атрибуты:
Кроме того, для реализаций GtkCellLayout, которые используют GtkCellArea для размещения ячеек (все GtkCellLayouts в GTK+ используют GtkCellArea), свойства ячеек также могут быть определены в формате, задавая атрибут <cell-packing>, который может содержать несколько элементов <property>, определенных обычным способом.
Вот фрагмент определения пользовательского интерфейса, задающий свойства ячейки:
Наследование от реализаций GtkCellLayout
При наследовании от виджета, который реализует GtkCellLayout, например, GtkIconView или GtkComboBox, необходимо учитывать тот факт, что эти виджеты используют GtkCellArea внутри.
Область ячейки предоставляется как свойство только для создания этими виджетами. Это означает, что можно, например, сделать
для использования настраиваемой области ячейки с комбинированным полем. Но свойства только для создания инициализируются только после выполнения функций экземпляра init() , что означает, что использование функций, которые полагаются на существование области ячейки в вашей подклассовой функции init() , приведет к созданию по умолчанию области ячейки. В этом случае предоставленное значение свойства создания будет проигнорировано (с предупреждением, чтобы предупредить вас о проблеме).
<object class="GtkCellView">
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>"
</object>Если поддержка альтернативных областей ячеек с вашим производным виджетом не важна, то это вас не должно беспокоить. Если вы хотите поддерживать альтернативные области ячеек, вы можете сделать это, вынеся проблемные вызовы из init() в constructor() для вашего класса.
Функции
GtkCellLayoutDataFunc ()
void (*GtkCellLayoutDataFunc) (GtkCellLayout *cell_layout,GtkCellRenderer *cell,GtkTreeModel *tree_model,GtkTreeIter *iter,gpointer data);
Функция, которая должна установить значение ячейки рендерера cell_layout соответствующим образом.
Параметры
cell_layout | объект GtkCellLayout | |
cell | рендерер ячейки, значение которого необходимо установить | |
tree_model | модель | |
iter | объект GtkTreeIter, указывающий строку, для которой нужно установить значение | |
data | пользовательские данные, переданные в | [closure] |
gtk_cell_layout_pack_start ()
void gtk_cell_layout_pack_start (GtkCellLayout *cell_layout,GtkCellRenderer *cell,gboolean expand);
Добавляет cell в начало cell_layout. Если expand равен FALSE, то cell получает только необходимое место. Любое неиспользуемое место равномерно распределяется между ячейками, для которых expand равен TRUE.
Обратите внимание, что повторное использование одного и того же рендерера ячейки не поддерживается.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer | |
expand |
|
С: 2.4
gtk_cell_layout_pack_end ()
void gtk_cell_layout_pack_end (GtkCellLayout *cell_layout,GtkCellRenderer *cell,gboolean expand);
Добавляет cell в конец cell_layout. Если expand равен FALSE, то cell получает только необходимое место. Любое неиспользуемое место равномерно распределяется между ячейками, для которых expand равен TRUE.
Обратите внимание, что повторное использование одного и того же рендерера ячейки не поддерживается.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer | |
expand |
|
С: 2.4
gtk_cell_layout_get_area ()
GtkCellArea *
gtk_cell_layout_get_area (GtkCellLayout *cell_layout); Возвращает базовую область GtkCellArea, которая может быть cell_layout, если вызвана для GtkCellArea, или может быть NULL, если GtkCellArea не используется cell_layout.
Параметры
cell_layout | объект GtkCellLayout |
Возвращает
область ячейки, используемую cell_layout, или NULL в случае отсутствия используемой области ячейки.
[transfer none][nullable]
С: 3.0
gtk_cell_layout_get_cells ()
GList *
gtk_cell_layout_get_cells (GtkCellLayout *cell_layout); Возвращает рендеры ячеек, добавленные в cell_layout.
Параметры
cell_layout | объект GtkCellLayout |
Возвращает
список рендеров ячеек. Список, но не сами рендеры, был выделен заново и должен быть освобожден с помощью g_list_free(), когда больше не нужен.
[element-type GtkCellRenderer][transfer container]
С: 2.12
gtk_cell_layout_reorder ()
void gtk_cell_layout_reorder (GtkCellLayout *cell_layout,GtkCellRenderer *cell,gint position);
Перевставляет cell на позицию position.
Обратите внимание, что cell уже должен быть упакован в cell_layout для правильной работы.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer для переупорядочивания | |
position | новая позиция для вставки |
С: 2.4
gtk_cell_layout_clear ()
void
gtk_cell_layout_clear (GtkCellLayout *cell_layout); Снимает все сопоставления со всех рендеров ячеек в cell_layout и удаляет все рендеры из cell_layout.
Параметры
cell_layout | объект GtkCellLayout |
С: 2.4
gtk_cell_layout_set_attributes ()
void gtk_cell_layout_set_attributes (GtkCellLayout *cell_layout,GtkCellRenderer *cell,...);
Устанавливает атрибуты из списка как атрибуты cell_layout.
Атрибуты должны быть в порядке атрибут/колонка, как в gtk_cell_layout_add_attribute(). Все существующие атрибуты удаляются и заменяются новыми.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer | |
... | список атрибутов, завершающийся |
С версии: 2.4
gtk_cell_layout_add_attribute ()
void gtk_cell_layout_add_attribute (GtkCellLayout *cell_layout,GtkCellRenderer *cell,const gchar *attribute,gint column);
Добавляет отображение атрибута в список в cell_layout.
column — это колонка модели, из которой нужно получить значение, а attribute — это параметр на cell, который нужно установить из значения. Например, если колонка 2 модели содержит строки, вы можете настроить атрибут «text» у GtkCellRendererText для получения значений из колонки 2.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer | |
attribute | атрибут рендерера | |
column | положение колонки в модели для получения атрибута |
С версии: 2.4
gtk_cell_layout_set_cell_data_func ()
void gtk_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout,GtkCellRenderer *cell,GtkCellLayoutDataFunc func,gpointer func_data,GDestroyNotify destroy);
Устанавливает GtkCellLayoutDataFunc для использования с cell_layout.
Эта функция используется вместо стандартного отображения атрибутов для установки значения колонки и должна установить значение рендерера ячейки cell_layout соответствующим образом.
func может быть NULL, чтобы удалить ранее установленную функцию.
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer | |
func | функция GtkCellLayoutDataFunc для использования или | [allow-none] |
func_data | пользовательские данные для | [closure] |
destroy | уведомление о удалении для |
С версии: 2.4
gtk_cell_layout_clear_attributes ()
void gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout,GtkCellRenderer *cell);
Очищает все существующие атрибуты, ранее установленные с помощью gtk_cell_layout_set_attributes().
Параметры
cell_layout | объект GtkCellLayout | |
cell | объект GtkCellRenderer для очистки отображения атрибутов |
С версии: 2.4
Типы и Значения
GtkCellLayout
typedef struct _GtkCellLayout GtkCellLayout;
struct GtkCellLayoutIface
struct GtkCellLayoutIface {
/* Virtual Table */
void (* pack_start) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
gboolean expand);
void (* pack_end) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
gboolean expand);
void (* clear) (GtkCellLayout *cell_layout);
void (* add_attribute) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
const gchar *attribute,
gint column);
void (* set_cell_data_func) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
GtkCellLayoutDataFunc func,
gpointer func_data,
GDestroyNotify destroy);
void (* clear_attributes) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell);
void (* reorder) (GtkCellLayout *cell_layout,
GtkCellRenderer *cell,
gint position);
GList* (* get_cells) (GtkCellLayout *cell_layout);
GtkCellArea *(* get_area) (GtkCellLayout *cell_layout);
};
Члены
| Добавляет ячейку в начало cell_layout. | |
| Добавляет ячейку в конец cell_layout. | |
| Снимает все отображения для всех рендереров в cell_layout и удаляет все рендеры из cell_layout. | |
| Добавляет отображение атрибута в список в cell_layout. | |
| Устанавливает GtkCellLayoutDataFunc для использования с cell_layout. | |
| Очищает все существующие атрибуты, ранее установленные с помощью | |
| Перевставляет ячейку в указанную позицию. | |
| Получение добавленных в cell_layout рендереров ячеек. | |
| Получение базового объекта GtkCellArea, который может быть cell_layout, если вызов производится на GtkCellArea или может быть NULL, если cell_layout не использует GtkCellArea. |
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/GtkCellLayout.html