【发布时间】:2019-07-23 21:14:01
【问题描述】:
我正在使用 GTK+ 创建一个 C++ 程序。为了选择文件,我使用了本机文件选择器,因为 gtk 文件选择器存在内存泄漏。
这是我的问题:如何为 GTK+ 中的本机文件选择器设置默认文件名(保存时)以及如何为其设置文件过滤器 - 以便仅能够打开或保存特定的文件扩展名?
我的程序在 Win32 上运行。 示例代码:
static void cb_SaveFileAs(GtkWidget *caller)
{
GtkWindow *parent_window = GTK_WINDOW(caller);
GtkFileChooserNative *native;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
gint res;
native = gtk_file_chooser_native_new("Save File",
parent_window,
action,
"_Save",
"_Cancel");
res = gtk_native_dialog_run(GTK_NATIVE_DIALOG(native));
if (res == GTK_RESPONSE_ACCEPT)
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER(native);
filename = gtk_file_chooser_get_filename(chooser);
// save the file
save_to_file(filename);
g_free(filename);
}
g_object_unref(native);
}
【问题讨论】:
-
代码示例不完整。
-
是的,它是从我的函数中删除的,作为唯一需要修改的片段。另一个代码太复杂了。但是出于教程目的,我完成了示例中的代码,因此它现在可以工作了。该函数是一个回调函数。
标签: c++ gtk gtk3 filechooser