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 реализуется 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 внутри. Область ячейки доступна в качестве свойства для создания только этих виджетов. Это означает, что можно, например, сделать
для использования настраиваемой области ячейки с комбобоксом. Но свойства для создания инициализируются только после выполнения функций instance 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 | ||
cell | рендерер ячейки, значение которого нужно установить | |
tree_model | модель | |
iter | a 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 | ||
cell | ||
expand |
|
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 | ||
cell | ||
expand |
|
gtk_cell_layout_get_area ()
GtkCellArea *
gtk_cell_layout_get_area (GtkCellLayout *cell_layout); Возвращает базовый GtkCellArea, который может быть cell_layout, если вызов происходит на GtkCellArea, или может быть NULL, если GtkCellArea не используется cell_layout.
Параметры
cell_layout |
Возвращает
область ячейки, используемую cell_layout, или NULL в случае отсутствия области ячейки.
[transfer none][nullable]
gtk_cell_layout_get_cells ()
GList *
gtk_cell_layout_get_cells (GtkCellLayout *cell_layout); Возвращает рендеры ячеек, которые были добавлены к cell_layout.
Параметры
cell_layout |
Возвращает
список рендеров ячеек. Список, но не сами рендеры были выделены заново и должны быть освобождены с g_list_free(), когда больше не нужны.
[element-type GtkCellRenderer][transfer container]
gtk_cell_layout_reorder ()
void gtk_cell_layout_reorder (GtkCellLayout *cell_layout,GtkCellRenderer *cell,int position);
Вставляет cell на позицию position.
Обратите внимание, что cell должен быть уже размещён в cell_layout, чтобы эта функция работала правильно.
Параметры
cell_layout | ||
cell | a GtkCellRenderer для переупорядочения | |
position | новая позиция для вставки |
gtk_cell_layout_clear ()
void
gtk_cell_layout_clear (GtkCellLayout *cell_layout); Снимает все отображения во всех рендерах на cell_layout и удаляет все рендеры из cell_layout.
Параметры
cell_layout |
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 | ||
cell | ||
... | a |
gtk_cell_layout_add_attribute ()
void gtk_cell_layout_add_attribute (GtkCellLayout *cell_layout,GtkCellRenderer *cell,const char *attribute,int column);
Добавляет отображение атрибутов в список в cell_layout .
Параметр column — это столбец модели, из которого нужно получить значение, а attribute — это параметр в cell, который нужно установить из полученного значения. Например, если столбец 2 модели содержит строки, можно настроить атрибут «текст» у GtkCellRendererText для получения значений из столбца 2.
Параметры
cell_layout | ||
cell | ||
attribute | атрибут рендерера | |
column | позиция столбца в модели, из которой нужно получить атрибут |
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 | ||
cell | ||
func | функция GtkCellLayoutDataFunc для использования, или | [allow-none] |
func_data | данные пользователя для | [closure] |
destroy | уведомление об уничтожении для |
gtk_cell_layout_clear_attributes ()
void gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout,GtkCellRenderer *cell);
Очищает все существующие атрибуты, ранее заданные с помощью gtk_cell_layout_set_attributes().
Параметры
cell_layout | ||
cell | a GtkCellRenderer для очистки отображения атрибутов |
Типы и значения
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 char *attribute,
int 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,
int 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-old.gnome.org/gtk4/4.0/GtkCellLayout.html