0

当我使用此功能显示文本时

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

    }
}

当我打开文件时,我会保存。文本以不同的方式显示(没有下线)

**** the starting point : axis.x = 400  axis.y =220the pipline length :6****  turnleft point :   axis.x = 394   axis.y = 220Error points number 1:   distance from begin point:13the pipe length:23****  turnright point :   axis.x = 394  axis.y = 197the pipe length:23****  turnright point :   axis.x = 371   axis.y = 197Error points number 1:   distance from begin point:23
what should i  do to save the file and text appear in this file have structure like that:
**** 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
4

2 回答 2

3

听起来你在 Windows 上。我的猜测是文件以二进制模式保存,因此 Qt 没有将“\n”字符转换为“\r\n”。

您已经获得了所需的 QFile::Text 修饰符,但它不在正确的位置。您需要将它与 QFile::WriteOnly 一起添加到 open() 函数调用括号内,如下所示:

if(sFile.open(QFile::WriteOnly | QFile::Text)){
于 2013-05-18T06:03:49.020 回答
0

首先,你的“保存”功能让我大吃一惊。

  1. 当您实际保存文件时,为什么要“打开文件名”?
  2. 为什么不使用QString file来保存数据?是什么mFilename?或者你认为在这一行mFilename = file;你也改变了名字sFile?好吧,你没有。你不需要打电话sFile.setFileName(file);
  3. 什么是temp??为什么不写out << ui->plainTextEdit_2->toPlainText()

其次 -Qt使用 '\n' 作为行分隔符,而Windows Notepad使用 '\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);

更新:

darron 的方式QFile::Text更好。

于 2013-05-18T06:13:56.853 回答