【问题标题】:QFile: new file name append to tho last savedQFile:新文件名附加到上次保存的文件
【发布时间】:2015-10-13 15:49:00
【问题描述】:

我正在寻找我在此代码上所犯的错误,但自几个小时以来我找不到任何解决方案..

这个函数应该简单地将文件保存到目录:

void MyClass::saveSettingsToFile(QString file_name)
{
   QString path;
   path = dir.append(file_name);
   QFile my_file(path);
   if (!my_file.open(QFile::WriteOnly))
   {
      qDebug() << "Could not open file for writing";
   }
   QTextStream out(& my_file);
   out << "some text \n"
   my_file.flush();
   my_file.close();
   path = "";
   file_name ="";
}

其中 dir 是包含目录的 QString,file_name 是从 lineEdit 字段收集的。 当我第一次调用函数时,例如 file_name = "aaaa.txt",我在指定目录中找到了这个 aaaa.txt。好的。

当我再次调用 file_name = "bbbb.txt" 的函数时,我在指定目录中找到了这个文件:aaaa.txtbbbb.txt,而不是bbbb.txt

在我看来这是一个非常糟糕的错误,但我找不到什么!

已编辑:有这个错误 QTextStream out(&amp; path); 而不是 QTextStream out(&amp; my_file);

【问题讨论】:

    标签: qt qfile


    【解决方案1】:

    您正在使用 QString::append 修改 dir 变量。变量dir 显然是MyClass 的类成员。试试这个:

    void MyClass::saveSettingsToFile(QString file_name)
    {
       QString path(dir);
       path.append(file_name);
       QFile my_file(path);
       //...
    }
    

    【讨论】:

      【解决方案2】:

      QString::append 函数修改参数值本身,您可以在文档中看到:http://doc.qt.io/qt-5/qstring.html#append

      Example:
      
      QString x = "free";
      QString y = "dom";
      
      x.append(y);
      // x == "freedom"
      

      所以,发生的事情是它不断将内容附加到 dir 变量,而不仅仅是将结果分配给路径。

      【讨论】:

        猜你喜欢
        • 2014-06-03
        • 2021-07-04
        • 2013-09-18
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        相关资源
        最近更新 更多