如何从QPlainTextEdit中读取特定行

时间:2014-02-07 16:42:04

标签: c++ qt

我有一个包含此内容的QPlainTextEdit:

This
is
a
QPlainTextEdit

我在Qt文档中搜索要读取的命令,例如第四行(QPlainTextEdit):比如readLine(int line),但我找不到任何东西。

2 个答案:

答案 0 :(得分:9)

我会做以下事情:

QPlainTextEdit edit;
edit.setPlainText("This\nis\na\nQPlainTextEdit");

QTextDocument *doc = edit.document();
QTextBlock tb = doc->findBlockByLineNumber(1); // The second line.
QString s = tb.text(); // returns 'is'

答案 1 :(得分:0)

您需要获取纯文本,然后按行拆分。例如:

QStringList lines = plainTextEdit->plainText()
                      .split('\n', QString::SkipEmptyParts);
if (lines.count() > 3)
  qDebug() << "fourth line:" << lines.at(3);

如果您希望包含空行,请删除SkipEmptyParts参数 - 它将默认为KeepEmptyParts

您还可以使用文字流:

QString text = plainTextEdit->plainText();
QTextStream str(&text, QIODevice::ReadOnly);
QString line;
for (int n = 0; !str.atEnd() && n < 3; ++n)
  line = str.readLine();
qDebug() << "fourth or last line:" << line;