Spec-Zone.ru › GTK 4.0

GtkTreeModelSort

GtkTreeModelSort — GtkTreeModel, который делает сортируемым лежащий в основе дерево-модель

Функции

GtkTreeModel * gtk_tree_model_sort_new_with_model ()
GtkTreeModel * gtk_tree_model_sort_get_model ()
GtkTreePath * gtk_tree_model_sort_convert_child_path_to_path ()
gboolean gtk_tree_model_sort_convert_child_iter_to_iter ()
GtkTreePath * gtk_tree_model_sort_convert_path_to_child_path ()
void gtk_tree_model_sort_convert_iter_to-child-iter ()
void gtk_tree_model_sort_reset_default_sort_func ()
void gtk_tree_model_sort_clear_cache ()
gboolean gtk_tree_model_sort_iter_is_valid ()

Свойства

GtkTreeModel * model Только чтение/запись/создание

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

struct GtkTreeModelSort

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

    GObject
    ╰── GtkTreeModelSort

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

GtkTreeModelSort реализует GtkTreeModel, GtkTreeSortable и GtkTreeDragSource.

Включаемые файлы

#include <gtk/gtk.h>

Описание

Модель GtkTreeModelSort реализует интерфейс GtkTreeSortable. Она не хранит данные сама по себе, а создается с помощью дочерней модели и проксирует ее данные. Она имеет идентичные типы столбцов, что и эта дочерняя модель, и изменения в дочерней модели распространяются. Основная цель этой модели — предоставить способ сортировки другой модели без ее изменения. Обратите внимание, что функция сортировки, используемая GtkTreeModelSort, не гарантирует стабильности.

Использование этой модели лучше всего демонстрируется на примере. В следующем примере кода создаются два виджета GtkTreeView, каждый из которых отображает те же данные. Поскольку модель здесь обернута GtkTreeModelSort, два GtkTreeViews могут сортировать свои представления данных без влияния друг на друга. В отличие от этого, если мы просто поместим одну и ту же модель в каждый виджет, то сортировка первого также отсортирует второй.

Использование GtkTreeModelSort

Чтобы продемонстрировать, как получить доступ к лежащей в основе дочерней модели из модели сортировки, в следующем примере будет обработчик сигнала GtkTreeSelection «changed». В этом обработчике мы получаем строку из COLUMN_1 модели. Затем мы изменяем строку, находим ту же выбранную строку в дочерней модели и изменяем ее там.

Получение доступа к дочерней модели в обработчике изменений выделения

{
  GtkTreeView *tree_view1;
  GtkTreeView *tree_view2;
  GtkTreeModel *sort_model1;
  GtkTreeModel *sort_model2;
  GtkTreeModel *child_model;

  // get the child model
  child_model = get_my_model ();

  // Create the first tree
  sort_model1 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view1 = gtk_tree_view_new_with_model (sort_model1);

  // Create the second tree
  sort_model2 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view2 = gtk_tree_view_new_with_model (sort_model2);

  // Now we can sort the two models independently
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model1),
                                        COLUMN_1, GTK_SORT_ASCENDING);
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model2),
                                        COLUMN_1, GTK_SORT_DESCENDING);
}

Функции

gtk_tree_model_sort_new_with_model ()

GtkTreeModel *
gtk_tree_model_sort_new_with_model (GtkTreeModel *child_model);

Создаёт новый GtkTreeModelSort, с child_model в качестве дочерней модели.

[constructor]

Параметры

child_model

A GtkTreeModel

Возвращает

Новый GtkTreeModelSort.

[transfer full][type Gtk.TreeModelSort]

gtk_tree_model_sort_get_model ()

GtkTreeModel *
gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model);

Возвращает модель, которую сортирует GtkTreeModelSort.

Параметры

tree_model

a GtkTreeModelSort

Возвращает

“Дочерняя модель”, которая сортируется.

[transfer none]

gtk_tree_model_sort_convert_child_path_to_path ()

GtkTreePath *
gtk_tree_model_sort_convert_child_path_to_path
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreePath *child_path);

Преобразует child_path в путь относительно tree_model_sort . То есть, child_path указывает на путь в дочерней модели. Возвращаемый путь будет указывать на ту же строку в отсортированной модели. Если child_path не является допустимым путём в дочерней модели, то возвращается NULL.

Параметры

tree_model_sort

A GtkTreeModelSort

child_path

A GtkTreePath to convert

Возвращает

Вновь выделенный GtkTreePath, или NULL.

[nullable][transfer full]

gtk_tree_model_sort_convert_child_iter_to_iter ()

gboolean
gtk_tree_model_sort_convert_child_iter_to_iter
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreeIter *sort_iter,
                                GtkTreeIter *child_iter);

Устанавливает sort_iter для указания на строку в tree_model_sort, которая соответствует строке, на которую указывает child_iter . Если sort_iter не был установлен, возвращается FALSE. Примечание: булево значение возвращается только начиная с версии 2.14.

Параметры

tree_model_sort

A GtkTreeModelSort

sort_iter

Неинициализированный GtkTreeIter.

[out]

child_iter

Допустимый GtkTreeIter, указывающий на строку в дочерней модели

Возвращает

TRUE, если sort_iter был установлен, т.е. если sort_iter является допустимым указателем итератора на видимую строку в дочерней модели.

gtk_tree_model_sort_convert_path_to_child_path ()

GtkTreePath *
gtk_tree_model_sort_convert_path_to_child_path
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreePath *sorted_path);

Преобразует sorted_path в путь в дочерней модели tree_model_sort . То есть, sorted_path указывает на местоположение в tree_model_sort . Возвращаемый путь будет указывать на то же местоположение в модели, которая не сортируется. Если sorted_path не указывает на местоположение в дочерней модели, возвращается NULL.

Параметры

tree_model_sort

A GtkTreeModelSort

sorted_path

A GtkTreePath to convert

Возвращает

Вновь выделенный GtkTreePath, или NULL.

[nullable][transfer full]

gtk_tree_model_sort_convert_iter_to_child_iter ()

void
gtk_tree_model_sort_convert_iter_to_child_iter
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreeIter *child_iter,
                                GtkTreeIter *sorted_iter);

Устанавливает child_iter для указания на строку, на которую указывает sorted_iter .

Параметры

tree_model_sort

A GtkTreeModelSort

child_iter

Неинициализированный GtkTreeIter.

[out]

sorted_iter

Допустимый GtkTreeIter, указывающий на строку в tree_model_sort .

gtk_tree_model_sort_reset_default_sort_func ()

void
gtk_tree_model_sort_reset_default_sort_func
                               (GtkTreeModelSort *tree_model_sort);

Это сбрасывает функцию сортировки по умолчанию в состояние “несортированное”. То есть, порядок такой же, как и в дочерней модели. Модель будет отсортирована в том же порядке, что и дочерняя модель, только если GtkTreeModelSort находится в состоянии “несортированное”.

Параметры

tree_model_sort

A GtkTreeModelSort

gtk_tree_model_sort_clear_cache ()

void
gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort);

Эта функция почти никогда не должна вызываться. Она очищает tree_model_sort любых кэшированных итераторов, которые не были зафиксированы с помощью gtk_tree_model_ref_node(). Это может быть полезно, если сортируемая дочерняя модель статична (и не изменяется часто) и был большой объём нефиксированного доступа к узлам. Побочным эффектом этой функции является то, что все нефиксированные итераторы станут недопустимыми.

Параметры

tree_model_sort

A GtkTreeModelSort

gtk_tree_model_sort_iter_is_valid ()

gboolean
gtk_tree_model_sort_iter_is_valid (GtkTreeModelSort *tree_model_sort,
                                   GtkTreeIter *iter);

Эта функция медленная. Используйте её только для отладки и тестирования.

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

Параметры

tree_model_sort

A GtkTreeModelSort.

iter

A GtkTreeIter.

Возвращает

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

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

struct GtkTreeModelSort

struct GtkTreeModelSort;

Подробное описание свойств

Свойство “model”

  “model”                    GtkTreeModel *

Модель для сортировки TreeModelSort.

Владелец: GtkTreeModelSort

Флаги: Чтение / Запись / Только для создания

См. также

GtkTreeModel, GtkListStore, GtkTreeStore, GtkTreeSortable, GtkTreeModelFilter

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

Spec-Zone.ru

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