Spec-Zone.ru › GTK 4.0

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

a GtkCellLayout

cell

рендерер ячейки, значение которого нужно установить

tree_model

модель

iter

a 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

a GtkCellLayout

cell

a GtkCellRenderer

expand

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

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

a GtkCellLayout

cell

a GtkCellRenderer

expand

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

gtk_cell_layout_get_area ()

GtkCellArea *
gtk_cell_layout_get_area (GtkCellLayout *cell_layout);

Возвращает базовый GtkCellArea, который может быть cell_layout, если вызов происходит на GtkCellArea, или может быть NULL, если GtkCellArea не используется cell_layout.

Параметры

cell_layout

a GtkCellLayout

Возвращает

область ячейки, используемую cell_layout, или NULL в случае отсутствия области ячейки.

[transfer none][nullable]

gtk_cell_layout_get_cells ()

GList *
gtk_cell_layout_get_cells (GtkCellLayout *cell_layout);

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

Параметры

cell_layout

a GtkCellLayout

Возвращает

список рендеров ячеек. Список, но не сами рендеры были выделены заново и должны быть освобождены с 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

a GtkCellLayout

cell

a GtkCellRenderer для переупорядочения

position

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

gtk_cell_layout_clear ()

void
gtk_cell_layout_clear (GtkCellLayout *cell_layout);

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

Параметры

cell_layout

a GtkCellLayout

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

a GtkCellLayout

cell

a GtkCellRenderer

...

a NULL-terminated list of attributes

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

a GtkCellLayout

cell

a GtkCellRenderer

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

a GtkCellLayout

cell

a GtkCellRenderer

func

функция GtkCellLayoutDataFunc для использования, или NULL.

[allow-none]

func_data

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

[closure]

destroy

уведомление об уничтожении для func_data

gtk_cell_layout_clear_attributes ()

void
gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout,
                                  GtkCellRenderer *cell);

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

Параметры

cell_layout

a GtkCellLayout

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);
};

Члены

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-old.gnome.org/gtk4/4.0/GtkCellLayout.html

Spec-Zone.ru

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