如何检索具有完整路径的文件名以将数据写入其中

时间:2013-12-19 09:10:19

标签: c++ qt qfile

简要说明:在我的Qt工具中,我想在用户按下关闭按钮后立即发生事情

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

  • 2)如果用户已将文件保存在其上的不同位置 计算机,我应该能够在保存的文件上写日志。

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

第1部分的MY代码如下所示。

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 ;
 }

2 个答案:

答案 0 :(得分:2)

您可以使用file_dialog.selectedFiles()访问所选文件。另请参阅静态函数QFileDialog::getSaveFileName

答案 1 :(得分:0)

如我的评论中所述,您可以使用following method

  

QStringList QFileDialog :: selectedFiles()const

     

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

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

如果您选择以某种方式传递QFileDialog,您可以获取字符串列表,并且它只包含您的案例中的一个项目,因此您可以使用first()便捷方法。