获取 QTextEdit 的换行
Get wrapped lines of QTextEdit
有没有办法让每一行都显示在QTextEdit中?
我有一些无格式的文本显示在QTextEdit中,如下所示:
QString someText = "bla bla bla bla bla bla bla bla bla bla bla bla bla";
QTextEdit* texEdit = new QTextEdit();
textEdit->setLineWrapMode(QTextEdit::FixedColumnWidth);
texEdit->setLineWrapColumnOrWidth(38);
texEdit->setWordWrapMode(QTextOption::WordWrap);
texEdit->setText(someText);
在文本编辑中将"某些文本"显示为 2 行
bla bla bla bla bla bla bla bla bla
bla bla bla bla
现在我想让每一行都显示在我的 QTextEdit 中。然而,我还没有做到这一点。
起初我天真地尝试过
textEdit->toPlainText().split("n")
不幸的是,这没有给我换行的行,因为换行不会插入换行符。
所以我想也许QTextDocument是要走的路,结果也是一条死胡同。
QTextDocument* doc = textEdit->document();
qDebug() << "document linecount: " << doc->lineCount();
qDebug() << "block count:" << doc->blockCount();
qDebug() << "lines in block: " << doc->findBlock(1).lineCount();
其中每个返回 1。
任何帮助将不胜感激,谢谢!
您需要将换行文本的每一行(因为它显示在 QTextEdit 中)作为单独的 QString,对吗?
QTextEdit 控件中的 QTextDocument 按段落(由 QTextBlock 表示)存储其文本,每个段落布局为一组文本行 (QTextLine)。您只需要从那里提取这些文本行。这是我的代码示例。
QStringList splitByLines(const QTextDocument *doc)
{
if(!doc)
return QStringList();
QStringList ret;
QTextBlock tb = doc->begin();
while(tb.isValid())
{
QString blockText = tb.text();
Q_ASSERT(tb.layout());
if(!tb.layout())
continue;
for(int i = 0; i != tb.layout()->lineCount(); ++i)
{
QTextLine line = tb.layout()->lineAt(i);
ret.append(blockText.mid(line.textStart(), line.textLength()));
}
tb = tb.next();
}
return ret;
}
现在你可以简单地调用splitByLines(textEdit->document())来获得你想要的东西。请注意,当文档布局(请参阅文档布局更改())或内容(请参阅内容更改())更改时,您必须重新提取行。
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 将缓冲区复制到剪贴板 [换行错误]
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 如何正确转发/换行static_cast?
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- C++在标点符号后将字符串换行
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 获取 QTextEdit 的换行