Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在QT中的记事本有一个错误_Qt - Fatal编程技术网

我在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
    的方式更好