我在QT中的记事本有一个错误
当我使用此函数显示文本时我在QT中的记事本有一个错误,qt,Qt,当我使用此函数显示文本时 ui->plainTextEdit_2->appendPlainText() 文本如下所示: **** the starting point : axis.x = 400 axis.y =220 the pipline length :12 **** turnleft point : axis.x = 388 axis.y = 220 Error points number 1: distance from begin point:6 th
ui->plainTextEdit_2->appendPlainText()
文本如下所示:
**** the starting point : axis.x = 400 axis.y =220
the pipline length :12
**** turnleft point : axis.x = 388 axis.y = 220
Error points number 1: distance from begin point:6
the pipe length:17
**** turnright point : axis.x = 388 axis.y = 203
Error points number 1: distance from begin point:11
但当我想保存文件并使用
void MainWindow::on_actionSave_Text_triggered()
{
QString file = QFileDialog::getSaveFileName(this,"Open file name");
QFile sFile(mFilename);
if (!file.isEmpty()){
mFilename = file;
if(sFile.open(QFile::WriteOnly)| QFile::Text){
QTextStream out(&sFile);
out<< temp;
sFile.flush();
sFile.close();
}
}
}
听起来你好像在Windows上。我猜文件是以二进制模式保存的,因此Qt没有将“\n”字符转换为“\r\n” 您已经获得了所需的QFile::Text修饰符,但它不在正确的位置。您需要将其与QFile::WriteOnly一起添加到open()函数调用括号中,如下所示:
if(sFile.open(QFile::WriteOnly | QFile::Text)){
听起来你好像在Windows上。我猜文件是以二进制模式保存的,因此Qt没有将“\n”字符转换为“\r\n” 您已经获得了所需的QFile::Text修饰符,但它不在正确的位置。您需要将其与QFile::WriteOnly一起添加到open()函数调用括号中,如下所示:
if(sFile.open(QFile::WriteOnly | QFile::Text)){
首先,你的“拯救”功能让我大吃一惊
QString文件保存数据?什么是mFilename
?或者您认为在这行mFilename=file
您还可以更改sFile
的名称吗?嗯,你没有。您不需要调用sFile.setFileName(文件)代码>取而代之
temp
??为什么不写出明文编辑->toPlainText()Qt
使用“\n”作为行分隔符,而Windows记事本使用“\r\n”并且不理解\n
。因此,在保存/加载时,您必须使用普通文本编辑器(我使用的任何其他编辑器,都能正确理解这两种方式),或写入转换“\n”\r\n”:
QString text = ui->plainTextEdit_2->toPlainText();
text.replace('\n', "\r\n");
out << text;
...
// when loading:
QString text;
in >> text;
text.replace("\r\n", "\n");
ui->plainTextEdit_2->setPlainText(text);
QString text=ui->plaintextededit\u 2->toPlainText();
text.replace('\n',“\r\n”);
输出>文本;
text.replace(“\r\n”,“\n”);
用户界面->明文编辑\u 2->设置明文(文本);
更新:
darron使用QFile::Text的方式更好。首先,你的“保存”功能让我大吃一惊
当您实际保存文件时,为什么要“打开文件名”
为什么不使用QString文件保存数据?什么是mFilename
?或者您认为在这行mFilename=file
您还可以更改sFile
的名称吗?嗯,你没有。您不需要调用sFile.setFileName(文件)代码>取而代之
什么是temp
??为什么不写出明文编辑->toPlainText()
其次-Qt
使用“\n”作为行分隔符,而Windows记事本使用“\r\n”并且不理解\n
。因此,在保存/加载时,您必须使用普通文本编辑器(我使用的任何其他编辑器,都能正确理解这两种方式),或写入转换“\n”\r\n”:
QString text = ui->plainTextEdit_2->toPlainText();
text.replace('\n', "\r\n");
out << text;
...
// when loading:
QString text;
in >> text;
text.replace("\r\n", "\n");
ui->plainTextEdit_2->setPlainText(text);
QString text=ui->plaintextededit\u 2->toPlainText();
text.replace('\n',“\r\n”);
输出>文本;
text.replace(“\r\n”,“\n”);
用户界面->明文编辑\u 2->设置明文(文本);
更新:
达伦使用QFile::Text
的方式更好