QFile:新文件名附加到上次保存

时间:2015-10-13 15:49:01

标签: qt qfile

我正在寻找我在此代码中犯的错误,但是从几个小时后我就找不到任何解决方案..

此功能应简化将文件保存到目录:

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,则从lineEdit字段收集file_name。 当我第一次调用该函数时,例如file_name =&#34; aaaa.txt&#34;,我在指定的目录中找到了这个 aaaa.txt 。好的。

然后我再次使用file_name =&#34; bbbb.txt&#34;再次调用该函数,我在指定目录中找到此文件: aaaa.txtbbbb.txt ,而不是 bbbb.txt

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

已编辑:出现此错误QTextStream out(& path);而不是QTextStream out(& my_file);

2 个答案:

答案 0 :(得分:1)

QString :: append函数修改参数值本身,如文档中所示:http://doc.qt.io/qt-5/qstring.html#append

<div ng-cloak>
    //whatever your app code is
</div>

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

答案 1 :(得分:1)

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

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