3

我找不到Gtk::FileChooserNative用于帮助我了解如何使用此类的代码示例。这里的文档没有那么有用。

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

当我尝试编译这个时:

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

4

1 回答 1

1

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

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();
}
于 2021-08-07T16:57:43.870 回答