Spec-Zone.ru › GTK 4.0

GtkTreeStore

GtkTreeStore — Деревовидная структура данных, которая может использоваться с GtkTreeView

Функции

GtkTreeStore * gtk_tree_store_new ()
GtkTreeStore * gtk_tree_store_newv ()
void gtk_tree_store_set_column_types ()
void gtk_tree_store_set_value ()
void gtk_tree_store_set ()
void gtk_tree_store_set_valist ()
void gtk_tree_store_set_valuesv ()
gboolean gtk_tree_store_remove ()
void gtk_tree_store_insert ()
void gtk_tree_store_insert_before ()
void gtk_tree_store_insert_after ()
void gtk_tree_store_insert_with_values ()
void gtk_tree_store_insert_with_valuesv ()
void gtk_tree_store_prepend ()
void gtk_tree_store_append ()
gboolean gtk_tree_store_is_ancestor ()
int gtk_tree_store_iter_depth ()
void gtk_tree_store_clear ()
gboolean gtk_tree_store_iter_is_valid ()
void gtk_tree_store_reorder ()
void gtk_tree_store_swap ()
void gtk_tree_store_move_before ()
void gtk_tree_store_move_after ()

Типы и значения

struct GtkTreeStore

Иерархия объектов

    GObject
    ╰── GtkTreeStore

Реализованные интерфейсы

GtkTreeStore реализует GtkTreeModel, GtkTreeDragSource, GtkTreeDragDest, GtkTreeSortable и GtkBuildable.

Файлы

#include <gtk/gtk.h>

Описание

Объект GtkTreeStore — это модель списка для использования с виджетом GtkTreeView. Он реализует интерфейс GtkTreeModel и, следовательно, может использовать все доступные там методы. Он также реализует интерфейс GtkTreeSortable, что позволяет сортировать его с помощью представления. Наконец, он также реализует интерфейсы для перетаскивания по дереву.

GtkTreeStore как GtkBuildable

Реализация GtkTreeStore интерфейса GtkBuildable позволяет задавать столбцы модели с помощью элемента <columns>, который может содержать несколько элементов <column>, каждый из которых определяет один столбец модели. Атрибут «type» задаёт тип данных для столбца.

Пример фрагмента определения пользовательского интерфейса для дерева:

Функции

gtk_tree_store_new ()

GtkTreeStore *
gtk_tree_store_new (int n_columns,
                    ...);

Создаёт новую таблицу дерева с n_columns столбцами, каждый из которых имеет указанный тип. Обратите внимание, что поддерживаются только типы, производные от стандартных фундаментальных типов GObject.

Например, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_TEXTURE); создаст новую GtkTreeStore с тремя столбцами типа int, gchararray и GdkTexture соответственно.

Параметры

n_columns

количество столбцов в таблице дерева

...

все типы GType для столбцов от первого до последнего

Возвращает

новую GtkTreeStore

gtk_tree_store_newv ()

GtkTreeStore *
gtk_tree_store_newv (int n_columns,
                     GType *types);

Функция создания без использования переменного числа аргументов. В основном используется языковыми связками.

[rename-to gtk_tree_store_new]

Параметры

n_columns

количество столбцов в таблице дерева

types

массив типов GType для столбцов от первого до последнего.

[array length=n_columns]

Возвращает

новую GtkTreeStore.

[transfer full]

gtk_tree_store_set_column_types ()

void
gtk_tree_store_set_column_types (GtkTreeStore *tree_store,
                                 int n_columns,
                                 GType *types);

Эта функция предназначена в первую очередь для GObjects, которые наследуют от GtkTreeStore, и должна использоваться только при создании новой GtkTreeStore. Она не будет работать после добавления строки или вызова метода интерфейса GtkTreeModel.

Параметры

tree_store

A GtkTreeStore

n_columns

Количество столбцов для таблицы дерева

types

Массив типов GType, по одному для каждого столбца.

[array length=n_columns]

gtk_tree_store_set_value ()

void
gtk_tree_store_set_value (GtkTreeStore *tree_store,
                          GtkTreeIter *iter,
                          int column,
                          GValue *value);

Устанавливает данные в ячейке, указанной iter и column. Тип value должен быть преобразуем в тип столбца.

Параметры

tree_store

a GtkTreeStore

iter

Действительный GtkTreeIter для изменяемой строки

column

номер изменяемого столбца

value

новое значение для ячейки

gtk_tree_store_set ()

void
gtk_tree_store_set (GtkTreeStore *tree_store,
                    GtkTreeIter *iter,
                    ...);

Устанавливает значение одной или нескольких ячеек в строке, на которую ссылается iter. Список аргументов должен содержать номера столбцов, каждый номер столбца, за которым следует устанавливаемое значение. Список завершается -1. Например, для установки столбца 0 с типом G_TYPE_STRING на «Foo», вы бы написали gtk_tree_store_set (store, iter, 0, "Foo", -1).

Значение будет сохраннено в памяти хранилища, если это ссылка, и будет скопировано, если это значение или G_TYPE_STRING или G_TYPE_BOXED.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter для изменяемой строки

...

пары номер столбца и значение, завершаемые -1

gtk_tree_store_set_valist ()

void
gtk_tree_store_set_valist (GtkTreeStore *tree_store,
                           GtkTreeIter *iter,
                           va_list var_args);

См. gtk_tree_store_set(); этот вариант использует va_list для использования языковыми связками.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter для изменяемой строки

var_args

va_list пар столбец/значение

gtk_tree_store_set_valuesv ()

void
gtk_tree_store_set_valuesv (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            int *columns,
                            GValue *values,
                            int n_values);

Вариант gtk_tree_store_set_valist(), который принимает столбцы и значения в виде двух массивов вместо аргументов. Эта функция в основном предназначена для языковых связок или в случае, если количество изменяемых столбцов неизвестно до выполнения.

[rename-to gtk_tree_store_set]

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter для изменяемой строки

columns

массив номеров столбцов.

[array length=n_values]

values

массив GValues.

[array length=n_values]

n_values

длина массивов columns и values

gtk_tree_store_remove ()

gboolean
gtk_tree_store_remove (GtkTreeStore *tree_store,
                       GtkTreeIter *iter);

Удаляет iter из tree_store. После удаления iter устанавливается на следующую допустимую строку на том же уровне или аннулируется, если она ранее указывала на последнюю.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter

Возвращает

TRUE если iter всё ещё действителен, FALSE если нет.

gtk_tree_store_insert ()

void
gtk_tree_store_insert (GtkTreeStore *tree_store,
                       GtkTreeIter *iter,
                       GtkTreeIter *parent,
                       int position);

Создаёт новую строку в позиции position . Если родительский элемент не NULL, то строка станет дочерней для parent. В противном случае строка будет создана на верхнем уровне. Если position равно -1 или больше, чем количество строк на этом уровне, новая строка будет вставлена в конец списка. iter будет изменено, чтобы указывать на эту новую строку. После вызова этой функции строка будет пустой. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки в новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

position

Позиция для вставки новой строки, или -1 для вставки в конец.

gtk_tree_store_insert_before ()

void
gtk_tree_store_insert_before (GtkTreeStore *tree_store,
                              GtkTreeIter *iter,
                              GtkTreeIter *parent,
                              GtkTreeIter *sibling);

Вставляет новую строку перед sibling . Если sibling является NULL, то строка будет добавлена к дочерним элементам parent. Если parent и sibling равны NULL, то строка будет добавлена на верхнем уровне. Если оба sibling и parent заданы, то parent должен быть родителем sibling. Когда sibling установлен, parent является необязательным.

iter будет изменено, чтобы указывать на эту новую строку. После вызова функции строка будет пустой. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки в новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

sibling

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_insert_after ()

void
gtk_tree_store_insert_after (GtkTreeStore *tree_store,
                             GtkTreeIter *iter,
                             GtkTreeIter *parent,
                             GtkTreeIter *sibling);

Вставляет новую строку после sibling . Если sibling равно NULL, то строка будет добавлена в начало дочерних элементов parent. Если parent и sibling равны NULL, то строка будет добавлена в начало на верхнем уровне. Если оба sibling и parent заданы, то parent должен быть родителем sibling. Когда sibling установлен, parent является необязательным.

iter будет изменено, чтобы указывать на эту новую строку. После вызова функции строка будет пустой. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки в новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

sibling

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_insert_with_values ()

void
gtk_tree_store_insert_with_values (GtkTreeStore *tree_store,
                                   GtkTreeIter *iter,
                                   GtkTreeIter *parent,
                                   int position,
                                   ...);

Создаёт новую строку в позиции position . iter будет изменено, чтобы указывать на эту новую строку. Если position равно -1 или больше, чем количество строк в списке, то новая строка будет добавлена в конец списка. Строка будет заполнена значениями, переданными в функцию.

Вызов gtk_tree_store_insert_with_values (tree_store, iter, position, ...) эквивалентен вызову

<object class="GtkTreeStore">
  <columns>
    <column type="gchararray"/>
    <column type="gchararray"/>
    <column type="gint"/>
  </columns>
</object>

за исключением того, что первый вариант будет генерировать только сигнал row_inserted, в то время как второй — row_inserted, row_changed и, если хранилище дерева отсортировано, rows_reordered. Поскольку многократное генерирование сигнала rows_reordered может повлиять на производительность программы, gtk_tree_store_insert_with_values() следует предпочитать при вставке строк в отсортированное хранилище дерева.

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки новой строки, или NULL.

[out][allow-none]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

position

Позиция для вставки новой строки, или -1 для вставки в конец после существующих строк

...

Пары номера столбца и значения, завершающиеся -1

gtk_tree_store_insert_with_valuesv ()

void
gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store,
                                    GtkTreeIter *iter,
                                    GtkTreeIter *parent,
                                    int position,
                                    int *columns,
                                    GValue *values,
                                    int n_values);

Вариант функции gtk_tree_store_insert_with_values(), принимающий массивы столбцов и значений вместо переменного числа аргументов. Эта функция предназначена в основном для языковых библиотек.

[rename-to gtk_tree_store_insert_with_values]

Параметры

tree_store

Объект GtkTreeStore

iter

Неинициализированный объект GtkTreeIter для задания новой строки, или NULL.

[out][allow-none]

parent

Действительный объект GtkTreeIter, или NULL.

[allow-none]

position

Позиция вставки новой строки, или -1 для последней

columns

Массив номеров столбцов.

[array length=n_values]

values

Массив GValues.

[array length=n_values]

n_values

Длина массивов columns и values

gtk_tree_store_prepend ()

void
gtk_tree_store_prepend (GtkTreeStore *tree_store,
                        GtkTreeIter *iter,
                        GtkTreeIter *parent);

Вставляет новую строку в начало tree_store. Если parent не NULL, то новая строка будет вставлена перед первым дочерним элементом parent, иначе – в корневой уровень. iter будет перенаправлен на эту новую строку. Строка будет пустой после выполнения функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

Объект GtkTreeStore

iter

Неинициализированный объект GtkTreeIter, который будет установлен на вставленную строку.

[out]

parent

Действительный объект GtkTreeIter, или NULL.

[allow-none]

gtk_tree_store_append ()

void
gtk_tree_store_append (GtkTreeStore *tree_store,
                       GtkTreeIter *iter,
                       GtkTreeIter *parent);

Добавляет новую строку в конец tree_store. Если parent не NULL, то новая строка будет добавлена после последнего дочернего элемента parent, иначе – в корневой уровень. iter будет перенаправлен на эту новую строку. Строка будет пустой после выполнения функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

Объект GtkTreeStore

iter

Неинициализированный объект GtkTreeIter, который будет установлен на добавленную строку.

[out]

parent

Действительный объект GtkTreeIter, или NULL.

[allow-none]

gtk_tree_store_is_ancestor ()

gboolean
gtk_tree_store_is_ancestor (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            GtkTreeIter *descendant);

Возвращает TRUE, если iter является предком descendant. То есть, iter является родителем (или прародителем, или прапрародителем) descendant.

Параметры

tree_store

Объект GtkTreeStore

iter

Действительный объект GtkTreeIter

descendant

Действительный объект GtkTreeIter

Возвращает

TRUE, если iter является предком descendant

gtk_tree_store_iter_depth ()

int
gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
                           GtkTreeIter *iter);

Возвращает глубину iter. Будет 0 для элементов на корневом уровне, 1 для элементов на следующем уровне и т.д.

Параметры

tree_store

Объект GtkTreeStore

iter

Действительный объект GtkTreeIter

Возвращает

Глубину iter

gtk_tree_store_clear ()

void
gtk_tree_store_clear (GtkTreeStore *tree_store);

Удаляет все строки из tree_store

Параметры

tree_store

Объект GtkTreeStore

gtk_tree_store_iter_is_valid ()

gboolean
gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store,
                              GtkTreeIter *iter);

ВНИМАНИЕ: Эта функция медленная. Используйте только для отладки и тестирования.

Проверяет, является ли заданный объект итератора допустимым для этого объекта GtkTreeStore.

Параметры

tree_store

Объект GtkTreeStore.

iter

Объект GtkTreeIter.

Возвращает

TRUE если итератор допустим, FALSE если итератор недопустим.

gtk_tree_store_reorder ()

void
gtk_tree_store_reorder (GtkTreeStore *tree_store,
                        GtkTreeIter *parent,
                        int *new_order);

Переупорядочивает дочерние элементы parent в tree_store в соответствии с порядком, указанным в new_order. Обратите внимание, что эта функция работает только с неупорядоченными хранилищами.

[skip]

Параметры

tree_store

A GtkTreeStore

parent

A GtkTreeIter, или NULL.

[nullable]

new_order

массив целых чисел, сопоставляющий новое положение каждого дочернего элемента с его старым положением до переупорядочения, т.е. new_order [newpos] = oldpos.

[array]

gtk_tree_store_swap ()

void
gtk_tree_store_swap (GtkTreeStore *tree_store,
                     GtkTreeIter *a,
                     GtkTreeIter *b);

Меняет местами a и b на одном уровне tree_store. Обратите внимание, что эта функция работает только с неупорядоченными хранилищами.

Параметры

tree_store

A GtkTreeStore.

a

A GtkTreeIter.

b

Другой GtkTreeIter.

gtk_tree_store_move_before ()

void
gtk_tree_store_move_before (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            GtkTreeIter *position);

Перемещает iter в tree_store в позицию перед position. iter и position должны находиться на одном уровне. Обратите внимание, что эта функция работает только с неупорядоченными хранилищами. Если position равно NULL, iter будет перемещено в конец уровня.

Параметры

tree_store

A GtkTreeStore.

iter

A GtkTreeIter.

position

A GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_move_after ()

void
gtk_tree_store_move_after (GtkTreeStore *tree_store,
                           GtkTreeIter *iter,
                           GtkTreeIter *position);

Перемещает iter в tree_store в позицию после position. iter и position должны находиться на одном уровне. Обратите внимание, что эта функция работает только с неупорядоченными хранилищами. Если position равно NULL, iter будет перемещено в начало уровня.

Параметры

tree_store

A GtkTreeStore.

iter

A GtkTreeIter.

position

A GtkTreeIter.

[allow-none]

Типы и Значения

struct GtkTreeStore

struct GtkTreeStore;

См. также

GtkTreeModel

© 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/GtkTreeStore.html

Spec-Zone.ru

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