启用GtkFileChooserDialog来select文件或文件夹

使用GTK +的GtkFileChooserDialog ,我怎样才能让用户select一个文件或一个文件夹(两者在这里都是有效的)。 可用的操作是相互排斥的。

不幸的是,我不认为这是可能的。

我在“传输”中的“创建一个种子”对话框中玩了一下,并使用radibox启动了两个选择器按钮之一,一个是文件模式,另一个是文件夹模式。

你可以添加另一个按钮。 这是一个小例子,说明你如何做到这一点。

void filechooser(GtkWidget* widget, gpointer data) { // we will pass the filepath by reference string* filepath = (string*) data; GtkWidget *dialog = gtk_file_chooser_dialog_new( "Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); // add a button which allows the user to select a folder const guint selected = 0; // response from the button gtk_dialog_add_button(GTK_DIALOG(dialog),"Select",selected); // get the path the user selected guint response = gtk_dialog_run(GTK_DIALOG(dialog)); if(response == GTK_RESPONSE_ACCEPT || response == selected){ *filepath = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); } gtk_widget_destroy(dialog); } 

请注意,在我的示例中,“选择”按钮与“打开”操作的操作相同,如果选择了一个文件,这对于文件夹来说只是真的不同。