Spec-Zone.ru › GTK 3.24

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

пользовательские данные, переданные в gtk_cell_layout_set_cell_data_func().

[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

TRUE если cell должен получить дополнительное выделенное пространство для cell_layout

С: 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

TRUE если cell должен получить дополнительное выделенное пространство для cell_layout

С: 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

новая позиция для вставки cell

С: 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

...

список атрибутов, завершающийся NULL

С: 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 для использования, или NULL.

[allow-none]

func_data

данные пользователя для func .

[closure]

destroy

обработчик уничтожения для func_data

С версии: 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);
};

Члены

pack_start ()

Добавляет ячейку в начало cell_layout.

pack_end ()

Добавляет ячейку в конец cell_layout.

clear ()

Снимает все отображения атрибутов для всех отрисовщиков в cell_layout и удаляет все отрисовщики из cell_layout.

add_attribute ()

Добавляет отображение атрибута в список в cell_layout.

set_cell_data_func ()

Устанавливает GtkCellLayoutDataFunc для использования с cell_layout.

clear_attributes ()

Очищает все существующие атрибуты, ранее заданные с помощью gtk_cell_layout_set_attributes().

reorder ()

Переставляет ячейку в заданную позицию.

get_cells ()

Возвращает отрисовщики ячеек, добавленные в cell_layout.

get_area ()

Возвращает базовую область 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API