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 |
Возвращаемое значение
объект ячейки GtkCellArea, используемый 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.24/GtkCellLayout.html