You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GTK4的FileDialog添加FileFilter?

如何为GTK4的FileDialog正确添加FileFilter

你遇到的问题是因为gtk_file_dialog_set_filters()需要接收GListModel类型的参数,而不是单个GtkFileFilter对象。要解决这个问题,你需要把过滤器对象放到一个列表模型中(比如GListStore,它是GListModel的常用实现),再传递给对话框。

以下是修正后的完整代码:

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");

// 创建存储过滤器的列表模型,指定元素类型为GtkFileFilter
GListStore* filter_store = g_list_store_new(GTK_TYPE_FILE_FILTER);
// 将过滤器添加到列表中
g_list_store_append(filter_store, filefilter);

// 将列表模型设置给对话框
gtk_file_dialog_set_filters(fileDialog, G_LIST_MODEL(filter_store));

// 记得在不需要时释放资源(根据你的内存管理逻辑)
g_object_unref(filter_store);

补充说明:

  • 如果需要添加多个过滤器,只需重复调用g_list_store_append()添加更多GtkFileFilter对象即可。
  • GListStore是GTK中用于存储列表数据的基础容器,完全符合GListModel的要求,适合用来传递多个过滤器给GtkFileDialog。

内容的提问来源于stack exchange,提问作者kriptonus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:42:07