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] |
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
iter | Действительный GtkTreeIter для изменяемой строки | |
columns | массив номеров столбцов. | [array length=n_values] |
values | массив GValues. | [array length=n_values] |
n_values | длина массивов |
gtk_tree_store_remove ()
gboolean gtk_tree_store_remove (GtkTreeStore *tree_store,GtkTreeIter *iter);
Удаляет iter из tree_store. После удаления iter устанавливается на следующую допустимую строку на том же уровне или аннулируется, если она ранее указывала на последнюю.
Параметры
tree_store | ||
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 | ||
iter | Неинициализированный GtkTreeIter для установки в новую строку. | [out] |
parent | Действительный GtkTreeIter или | [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 | ||
iter | Неинициализированный GtkTreeIter для установки в новую строку. | [out] |
parent | Действительный GtkTreeIter или | [allow-none] |
sibling | Действительный GtkTreeIter или | [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 | ||
iter | Неинициализированный GtkTreeIter для установки в новую строку. | [out] |
parent | Действительный GtkTreeIter или | [allow-none] |
sibling | Действительный GtkTreeIter или | [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 | ||
iter | Неинициализированный GtkTreeIter для установки новой строки, или | [out][allow-none] |
parent | Действительный GtkTreeIter или | [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 для задания новой строки, или | [out][allow-none] |
parent | Действительный объект GtkTreeIter, или | [allow-none] |
position | Позиция вставки новой строки, или -1 для последней | |
columns | Массив номеров столбцов. | [array length=n_values] |
values | Массив GValues. | [array length=n_values] |
n_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, или | [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, или | [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 | ||
parent | A GtkTreeIter, или | [nullable] |
new_order | массив целых чисел, сопоставляющий новое положение каждого дочернего элемента с его старым положением до переупорядочения, т.е. | [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 или | [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;
См. также
© 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