gtkmm 4 FileChooserNative 代码示例

Example of gtkmm 4 FileChooserNative code

我找不到使用 Gtk::FileChooserNative 的代码示例来帮助我理解如何使用此 class。来自 here 的文档没有那么有用。

我的目标是创建一个打开本机文件选择器对话框并在用户选择文件夹后将文件夹路径打印到终端的功能。

当我尝试编译时:

void MyWindow::on_button_browse_clicked()
{
    Gtk::FileChooserNative dialog ("Please choose a folder", 
                                   Gtk::FileChooser::Action::SELECT_FOLDER,
                                   "Choose",
                                   "Cancel");
}

我收到以下错误:

error: calling a protected constructor of class 'Gtk::FileChooserNative'

如何创建 Gtk::FileChooserNative

我这里没有 Gtkmm 4,但是从您发布的文档来看,您似乎需要使用 factory method 而不是构造函数来创建这样的对话框:

static Glib::RefPtr<FileChooserNative> Gtk::FileChooserNative::create(
        const Glib::ustring& title,
        Window&              parent,
        FileChooser::Action  action,
        const Glib::ustring& accept_label = {},
        const Glib::ustring& cancel_label = {} 
)

在你的情况下,类似于:

void MyWindow::on_button_browse_clicked()
{
    auto dialog = Gtk::FileChooserNative::create("Please choose a folder",  
                                                 *this,    
                                                 Gtk::FileChooser::Action::SELECT_FOLDER ,
                                                 "Choose",
                                                 "Cancel");

    dialog->show();
}