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 () |
| gint | 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, чтобы его можно было сортировать с помощью представления. В конечном счёте, он также реализует интерфейсы перемещения с помощью drag-and-drop.
GtkTreeStore как GtkBuildable
Реализация GtkTreeStore интерфейса GtkBuildable позволяет указывать столбцы модели с помощью элемента <columns>, который может содержать несколько элементов <column>, каждый из которых указывает один столбец модели. Атрибут “type” задаёт тип данных для столбца.
Пример фрагмента определения пользовательского интерфейса для хранилища дерева:
Функции
gtk_tree_store_new ()
GtkTreeStore * gtk_tree_store_new (gint n_columns,...);
Создаёт новую структуру данных типа дерево со столбцами, заданными переданными типами. Обратите внимание, что поддерживаются только типы, производные от стандартных фундаментальных типов GObject.
Например, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING,
GDK_TYPE_PIXBUF); создаст новую GtkTreeStore с тремя столбцами типа gint, gchararray и GdkPixbuf соответственно.
Параметры
n_columns | количество столбцов в структуре данных типа дерево | |
... | все типы GType для столбцов, от первого до последнего |
Возвращаемое значение
новая GtkTreeStore
gtk_tree_store_newv ()
GtkTreeStore * gtk_tree_store_newv (gint 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,gint 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,gint 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_OBJECT, и будет скопировано, если это 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,gint *columns,GValue *values,gint n_values);
Вариант gtk_tree_store_set_valist(), который принимает столбцы и значения в виде двух массивов вместо varargs. Эта функция в основном предназначена для языковых библиотек или в случае, если количество изменяемых столбцов неизвестно до выполнения.
[rename-to gtk_tree_store_set]
Параметры
tree_store | ||
iter | Допустимый GtkTreeIter для строки, которая изменяется | |
columns | массив номеров столбцов. | [array length=n_values] |
values | массив GValues. | [array length=n_values] |
n_values | длина массивов |
С момента: 2.12
gtk_tree_store_remove ()
gboolean gtk_tree_store_remove (GtkTreeStore *tree_store,GtkTreeIter *iter);
Удаляет iter из tree_store. После удаления iter устанавливается на следующую корректную строку на том же уровне или становится некорректной, если она ранее указывала на последнюю строку.
Параметры
tree_store | ||
iter | Действительный GtkTreeIter |
gtk_tree_store_insert ()
void gtk_tree_store_insert (GtkTreeStore *tree_store,GtkTreeIter *iter,GtkTreeIter *parent,gint 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,gint 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 |
С: 2.10
gtk_tree_store_insert_with_valuesv ()
void gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store,GtkTreeIter *iter,GtkTreeIter *parent,gint position,gint *columns,GValue *values,gint n_values);
Вариант gtk_tree_store_insert_with_values(), принимающий массивы столбцов и значений вместо аргументов по умолчанию. Эта функция в основном предназначена для языковых библиотек.
[rename-to gtk_tree_store_insert_with_values]
Параметры
tree_store | ||
iter | Неинициализированный GtkTreeIter для установки новой строки или | [out][allow-none] |
parent | Действительный GtkTreeIter или | [allow-none] |
position | позиция для вставки новой строки, или -1 для последней | |
columns | массив номеров колонок. | [array length=n_values] |
values | массив GValues. | [array length=n_values] |
n_values | длина массивов |
С: 2.10
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 | ||
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 | ||
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 | ||
iter | Действительный GtkTreeIter | |
descendant | Действительный GtkTreeIter |
Возвращаемое значение
TRUE, если iter является предком descendant
gtk_tree_store_iter_depth ()
gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store,GtkTreeIter *iter);
Возвращает глубину iter. Будет 0 для элементов на корневом уровне, 1 для элементов на уровень ниже и т. д.
Параметры
tree_store | ||
iter | Действительный GtkTreeIter |
Возвращаемое значение
Глубина iter
gtk_tree_store_clear ()
void
gtk_tree_store_clear (GtkTreeStore *tree_store); Удаляет все строки из tree_store
Параметры
tree_store |
gtk_tree_store_iter_is_valid ()
gboolean gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store,GtkTreeIter *iter);
ПРЕДУПРЕЖДЕНИЕ: Эта функция медленная. Используйте её только для отладки и/или тестирования.
Проверяет, является ли данный итератор допустимым для этого GtkTreeStore.
Параметры
tree_store | A GtkTreeStore. | |
iter | A GtkTreeIter. |
Since: 2.2
gtk_tree_store_reorder ()
void gtk_tree_store_reorder (GtkTreeStore *tree_store,GtkTreeIter *parent,gint *new_order);
Переупорядочивает потомков parent в tree_store, следуя порядку, указанному в new_order. Обратите внимание, что эта функция работает только с несортированными хранилищами.
[skip]
Параметры
tree_store | ||
parent | A GtkTreeIter или | [nullable] |
new_order | Массив целых чисел, сопоставляющий новое положение каждого потомка со старым положением до переупорядочивания, то есть | [array] |
Since: 2.2
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. |
Since: 2.2
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] |
Since: 2.2
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] |
Since: 2.2
Типы и значения
Структура GtkTreeStore
struct GtkTreeStore;
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/GtkTreeStore.html