簡體   English   中英

從 FileChooserDialog 讀取多個文件 GTK 3

[英]Reading multiple files from FileChooserDialog GTK 3

我正在嘗試打開Gtkmm::FileChooserDialog以選擇多個文件並將它們的路徑連同文件名一起打印到 label。我可以打開對話框並選擇文件,但我很難將文件名讀取到我的變量中。

      FileChooserDialog openFileDialog("", FILE_CHOOSER_ACTION_OPEN);
      openFileDialog.add_button("Cancel", RESPONSE_CANCEL);
      openFileDialog.add_button("Open", RESPONSE_OK);
      openFileDialog.set_current_folder(ustring::compose("%1/Desktop", ustring(getenv("HOME"))));
      openFileDialog.set_transient_for(*this);
      openFileDialog.set_select_multiple(true);
      Glib::RefPtr<Gtk::FileFilter> fileFilter = Gtk::FileFilter::create();
      fileFilter->set_name("Text Files (*.txt)");
      fileFilter->add_pattern("*.txt");
      openFileDialog.add_filter(fileFilter);
      fileFilter = Gtk::FileFilter::create();
      fileFilter->set_name("All Files (*.*)");
      fileFilter->add_pattern("*.*");
      openFileDialog.add_filter(fileFilter);
      
      if (openFileDialog.run() == RESPONSE_OK)
        label.set_text(ustring::compose("File = %1", ustring(openFileDialog.get_filename())));
      return true;

您可以使用Gtk::FileChooser::get_filenames (Gtkmm 3.24):

if (openFileDialog.run() == Gtk::RESPONSE_OK)
{
  for(const auto& fileName : openFileDialog.get_filenames())
  {
    label.set_text(Glib::ustring::compose("File = %1", Glib::ustring(fileName)));
  }
}

它返回文件名的std::vector

注意:在我的回答中,我一直覆蓋label變量,因為它是您的代碼片段中的所有上下文。 我是你有多個標簽,或者你想以某種方式將所有文件名打包在一個 label 中。我把這部分交給你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM