GtkFilter
GtkFilter — Фильтрация элементов
Функции
| gboolean | gtk_filter_match () |
| GtkFilterMatch | gtk_filter_get_strictness () |
| void | gtk_filter_changed () |
Сигналы
| void | changed | Run Last |
Типы и значения
| GtkFilter | |
| перечисление | GtkFilterMatch |
| перечисление | GtkFilterChange |
Иерархия объектов
GObject
╰── GtkFilter
├── GtkMultiFilter
├── GtkBoolFilter
├── GtkCustomFilter
├── GtkFileFilter
╰── GtkStringFilter
Файлы заголовков
#include <gtk/gtk.h>
Описание
Объект GtkFilter описывает фильтрацию, выполняемую объектом GtkFilterListModel.
Модель будет использовать фильтр для определения, следует ли включать элементы или нет, вызывая gtk_filter_match() для каждого элемента и сохраняя только те, для которых функция возвращает TRUE.
Фильтры могут изменять сопоставляемые элементы в течение своего жизненного цикла. В этом случае они будут излучать сигнал «changed», чтобы уведомить о том, что предыдущие результаты фильтрации больше недействительны, и что элементы следует проверять снова с помощью gtk_filter_match().
GTK предоставляет различные готовые реализации фильтров для общих операций фильтрации. Эти фильтры часто включают свойства, которые могут быть связаны с различными виджетами, чтобы легко разрешить поиск.
Однако, особенно для больших списков или сложных методов поиска, также можно наследоваться от GtkFilter и предоставить свой собственный фильтр.
Функции
gtk_filter_match ()
gboolean gtk_filter_match (GtkFilter *self,gpointer item);
Проверяет, соответствует ли заданный item фильтру.
Параметры
self | объект GtkFilter | |
item | Элемент для проверки. | [type GObject][transfer none] |
Возвращаемое значение
TRUE , если фильтр соответствует элементу, и модель фильтра должна его сохранить, FALSE , если нет.
gtk_filter_get_strictness ()
GtkFilterMatch
gtk_filter_get_strictness (GtkFilter *self); Получает известную строгость filters. Если строгость неизвестна, возвращается GTK_FILTER_MATCH_SOME.
Это значение может измениться после излучения сигнала «changed».
Эта функция предназначена исключительно для оптимизации. Фильтры могут выбрать не реализовывать её, но GtkFilterListModel её использует.
Параметры
self | объект GtkFilter |
Возвращаемое значение
строгость self
gtk_filter_changed ()
void gtk_filter_changed (GtkFilter *self,GtkFilterChange change);
Излучает сигнал «changed», чтобы уведомить всех пользователей фильтра о том, что фильтр изменился. Пользователи фильтра должны затем снова проверить элементы с помощью gtk_filter_match().
В зависимости от параметра change, не все элементы нужно изменять, а только некоторые. Обратитесь к документации GtkFilterChange для получения подробностей.
Эта функция предназначена для разработчиков подклассов GtkFilter и не должна вызываться из других функций.
Параметры
self | объект GtkFilter | |
change | Как изменился фильтр |
Типы и значения
GtkFilter
typedef struct _GtkFilter GtkFilter;
Объект, описывающий фильтр.
перечисление GtkFilterMatch
Описывает известную строгость фильтра.
Обратите внимание, что для фильтров, где строгость неизвестна, GTK_FILTER_MATCH_SOME всегда является допустимым значением, даже если фильтр соответствует всем или ни одному элементу.
Элементы
GTK_FILTER_MATCH_SOME | Фильтр соответствует некоторым элементам, | |
GTK_FILTER_MATCH_NONE | Фильтр не соответствует ни одному элементу, | |
GTK_FILTER_MATCH_ALL | Фильтр соответствует всем элементам, |
перечисление GtkFilterChange
Подробно описывает изменения в фильтре и позволяет объектам, использующим фильтр, оптимизировать повторную фильтрацию элементов.
Если вы пишете реализацию и не уверены, какое значение передать, GTK_FILTER_CHANGE_DIFFERENT всегда является правильным выбором.
Элементы
GTK_FILTER_CHANGE_DIFFERENT | Изменение фильтра не может быть описано ни одним из других значений перечисления. | |
GTK_FILTER_CHANGE_LESS_STRICT | Фильтр менее строгий, чем раньше: Все элементы, для которых он раньше возвращал | |
GTK_FILTER_CHANGE_MORE_STRICT | Фильтр более строгий, чем раньше: Все элементы, для которых он раньше возвращал |
Подробности сигнала
Сигнал “changed”
void user_function (GtkFilter *self, GtkFilterChange change, gpointer user_data)
Этот сигнал генерируется всякий раз, когда фильтр изменяется. Пользователи фильтра должны повторно проверить элементы с помощью gtk_filter_match().
GtkFilterListModel обрабатывает этот сигнал автоматически.
В зависимости от параметра change, не все элементы должны быть изменены, а только некоторые. Подробности см. в документации GtkFilterChange.
Параметры
self | Фильтр GtkFilter | |
change | как изменился фильтр | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполнить последним
См. также
© 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/GtkFilter.html