QFile:新文件名附加到上次保存的
QFile: new file name append to tho last saved
我正在寻找我在这段代码中犯的错误,但几个小时后我找不到任何解决方案..
这个函数应该简单地将一个文件保存到一个目录:
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,而不是I
bbbb.txt
在我看来这是一个非常糟糕的错误,但我找不到什么!
已编辑:有这个错误 QTextStream out(& path);
而不是 QTextStream out(& my_file);
QString::append 函数修改参数值本身,如您在文档中所见:http://doc.qt.io/qt-5/qstring.html#append
Example:
QString x = "free";
QString y = "dom";
x.append(y);
// x == "freedom"
所以,发生的事情是它不断将内容附加到 dir 变量,而不仅仅是将结果分配给路径。
您正在使用 QString::append 修改 dir 变量。变量 dir 显然是 MyClass 的 class 成员。试试这个:
void MyClass::saveSettingsToFile(QString file_name)
{
QString path(dir);
path.append(file_name);
QFile my_file(path);
//...
}
我正在寻找我在这段代码中犯的错误,但几个小时后我找不到任何解决方案..
这个函数应该简单地将一个文件保存到一个目录:
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,而不是I bbbb.txt
在我看来这是一个非常糟糕的错误,但我找不到什么!
已编辑:有这个错误 QTextStream out(& path);
而不是 QTextStream out(& my_file);
QString::append 函数修改参数值本身,如您在文档中所见:http://doc.qt.io/qt-5/qstring.html#append
Example:
QString x = "free";
QString y = "dom";
x.append(y);
// x == "freedom"
所以,发生的事情是它不断将内容附加到 dir 变量,而不仅仅是将结果分配给路径。
您正在使用 QString::append 修改 dir 变量。变量 dir 显然是 MyClass 的 class 成员。试试这个:
void MyClass::saveSettingsToFile(QString file_name)
{
QString path(dir);
path.append(file_name);
QFile my_file(path);
//...
}