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 | ||
cell | ||
... | a |
Since: 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 | ||
cell | ||
attribute | an attribute on the renderer | |
column | the column position on the model to get the attribute from |
Since: 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 | ||
cell | ||
func | the GtkCellLayoutDataFunc to use, or | [allow-none] |
func_data | user data for | [closure] |
destroy | destroy notify for |
Since: 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 | ||
cell | a GtkCellRenderer to clear the attribute mapping on |
Since: 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.20/GtkCellLayout.html