如何在Qt5中的特定条目打开/关闭文件

How to open/close file at a specific entry in Qt5

本文关键字:文件 Qt5      更新时间:2023-10-16

我正在制作一个程序,该程序需要能够在特定点编辑文件,而特定行无法编辑,因为行数会随着时间的推移而变化。我计划使用qt的textEdit菜单元素来完成此操作。

例如,假设我有一个文件,其中有一个注释,如下所示:

#qtread
lots
of
stuff
#qtend

有没有什么方法可以让Qt文本编辑打开文件,只编辑#qtread#qtend条目之间的内容?

(此外,我完全是Qt的初学者,所以一个愚蠢的答案将是极好的,谢谢!)

您可以像这样逐行读取文件。创建指示是否读取的bool,例如readEnabled。在你读过这行之后,检查你的代币:

QFile inputFile(fileName);
QString outputText, startToken = "#qtread", endToken = "#qtend";
if (inputFile.open(QIODevice::ReadOnly))
{
    QTextStream in(&inputFile);
    bool readEnabled = false;
    while (!in.atEnd())
    {
        QString line = in.readLine();
        if(line == endToken) // the whole line has to match your comment
            readEnabled = false;
        if(readEnabled)
            outputText.append(line + "n");
        if(line == startToken)
            readEnabled = true;
    }
    inputFile.close();
}

你可能想完善一下。如果您想在评论之后立即开始阅读,或者接受带有尾随空格的评论,请参阅QString::leftQString::midQString::right,并尝试将其组合在一起。

编辑:

对不起,我忽略了你也想把它存回来。在这种情况下,编写文件实际上要困难得多,我会用C++标准库来完成。我鼓励您搜索,发布一个没有qt标志的新问题。