【问题标题】:How to retrieve file name with full path for writing data into it如何检索具有完整路径的文件名以将数据写入其中
【发布时间】:2013-12-19 09:10:18
【问题描述】:

简要说明:在我的 Qt 实用程序中,我希望用户在发生以下事情后立即点击关闭按钮

  • 1) 将出现一个文件对话框,其中包含保存/取消选项和 默认文件名。

  • 2) 如果用户已将文件保存在其上的不同位置
    电脑,我应该可以在那个保存的文件上写日志。

我已经完成了第一部分,但是当用户已经关闭对话框时,我对如何检索具有完整路径的文件名一无所知。

第 1 部分的我的代码如下。

void some_class ::on_write_file() 
    {

     // some code  ..
     bla bla bla
    switch( set_file_name_for_logging( QString::fromStdString( filename ) , this ) )
    {
      case QDialog::Accepted :
       std::cout <<" Retrive filename and full path name from the location where user has saved the file " and write on it;
      break;

     case QDialog::Rejected :
     break;
      default :
       throw_error( "Unexpected return value from save_ dump file  dialog" );
      break;
    }
  }

}

 int set_file_name_for_logging( const QString& str, som_class *cal ) 
   {
      QFileDialog file_dialog( cal );
      file_dialog.setDirectory(".");
      file_dialog.setAcceptMode(QFileDialog::AcceptSave);
      file_dialog.setNameFilter(  ("Text files (*.txt )") );
      file_dialog.selectFile( str );
      int ret = file_dialog.exec();
      return ret ;
 }

【问题讨论】:

  • 感谢大家的快速回复。我已经解决了问题
  • 好的,希望我们有用。 :)
  • @LaszloPapp ,哦,是的。你们一如既往地非常乐于助人...... tahnks

标签: c++ qt qfile


【解决方案1】:

您可以使用file_dialog.selectedFiles() 访问所选文件。还要看看静态函数QFileDialog::getSaveFileName

【讨论】:

    【解决方案2】:

    正如我在评论中所写,您可以使用following method

    QStringList QFileDialog::selectedFiles() const

    返回包含对话框中选定文件的绝对路径的字符串列表。如果没有选择文件,或者模式不是 ExistingFiles 或 ExistingFile,则 selectedFiles() 包含视口中的当前路径。

    另外,请注意,您的代码将需要一些重构才能实际传递 QFileDialog 或路径字符串本身。目前,无法直接访问它们。

    如果您选择以某种方式传递 QFileDialog,您可以获得字符串列表,并且在您的情况下它只会包含一项,因此您可以使用 first() 便捷方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多