Может ли кто-нибудь объяснить мне, как добавить FileFilter в FileDialog GTK4?
Думаю, у меня неправильное решение, оно не работает.
Я создал объект GTKFileFilter* и пытаюсь добавить его к объекту GTKFileDialog*:
GtkFileDialog* fileDialog=gtk_file_dialog_new();
GtkFileFilter* filefilter = gtk_file_filter_new();
gtk_file_filter_add_suffix(filefilter,"tsc");
gtk_file_filter_set_name(filefilter,"Simple");
gtk_file_dialog_set_filters(fileDialog,filefilter);
Но gtk_file_dialog_set_filters()
ожидайте GListModel* в качестве второго параметра, поэтому у меня есть утверждение:
Gtk-CRITICAL **: 09:44:48.986: gtk_file_dialog_set_filters: утверждение 'фильтры == NULL || G_IS_LIST_MODEL (фильтры)» не удалось
Как создать правильные фильтры?
Просто создайте GListModel и вставьте в него созданный вами фильтр, а затем передайте его в качестве параметра gtk_file_dialog_set_filters()
. Вы можете использовать GListStore.
GListStore* liststore = g_list_store_new (GtkFileFilter)
g_list_store_append(liststore, filefilter)
gtk_file_dialog_set_filters(fileDialog, liststore);
У меня ошибка компиляции: ошибка: ожидаемое выражение перед «GtkFileFilter» GListStore* list_store = g_list_store_new (GtkFileFilter);
Я попробовал это и вот мое предложение.
#include<gtk/gtk.h>
GtkFileDialog *filedialog = gtk_file_dialog_new();
GtkFileFilter* filefilter = gtk_file_filter_new();
gtk_file_filter_add_suffix(filefilter,"txt");
gtk_file_filter_set_name(filefilter,"Text");
GtkFileFilter *filefilter1 = gtk_file_filter_new();
gtk_file_filter_add_suffix(filefilter1,"c");
gtk_file_filter_set_name(filefilter1,"c-file");
GListStore* liststore = g_list_store_new (GTK_TYPE_FILE_FILTER);
g_list_store_append(liststore, filefilter);
g_list_store_append(liststore, filefilter1);
gtk_file_dialog_set_filters(filedialog,G_LIST_MODEL(liststore));
gtk_file_dialog_open(filedialog,GTK_WINDOW(window),NULL,NULL,NULL);
Реализацию модели списка также можно найти здесь.
https://stackoverflow.com/a/77759424/22768315
https://stackoverflow.com/a/78185115/22768315
https://stackoverflow.com/a/77619798/22768315
С уважением
Не могли бы вы сказать мне, где я могу найти полный список реализации GListModels?