我制作的程序需要能够在特定点编辑文件,特定的行不会发生,因为行数会随着时间的推移而变化。我打算用qt的textEdit菜单元素来做这件事。
例如,假设我有一个文件在其中的某个地方有这样的注释:
#qtread
lots
of
stuff
#qtend
有什么方法可以让Qt文本编辑打开文件,只编辑 #qtread 和 #qtend 条目之间的任何内容?
(我也是Qt的初学者,所以一个白痴的答案会很棒,谢谢!)
答案 0 :(得分:0)
您可以逐行阅读文件,例如this。创建一个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::left
,QString::mid
,QString::right
并尝试将某些内容放在一起。
修改强>
抱歉,我忽略了你也想把它保存起来。在这种情况下编写文件实际上要困难得多,我会使用C ++标准库。我鼓励您搜索,在没有 qt 标记的情况下发布新问题。