如何从 QPlainTextEdit 中读取特定行

How to read a specific line from QPlainTextEdit

提问人:user3204810 提问时间:2/8/2014 最后编辑:Kuba hasn't forgotten Monicauser3204810 更新时间:2/8/2014 访问量:7606

问:

我有一个QPlainTextEdit,内容如下:

This
is
a
QPlainTextEdit

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

C++ QT系列

评论


答:

1赞 Kuba hasn't forgotten Monica 2/8/2014 #1

您需要获取纯文本,并将其按行拆分。例如:

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

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

您还可以使用文本流:

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;
11赞 vahancho 2/8/2014 #2

我会做以下事情:

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'

评论

0赞 user3204810 2/8/2014
好的,它有效!如果我想获取文本中的总行数?
1赞 vahancho 2/8/2014
QTextDocument::lineCount() 会返回吗?我想是的。