据我所知(official source),Qt将QTextDocument中的块定义为一串字符,后跟 \ n 或类似字符。因此...
QTextDocument* doc = my_qtextedit.document();
QTextCursor cur = QTextCursor(doc);
cur.insertText("aaa\nbbb");
qDebug() << "nbr of blocks" << doc->blockCount();
...打印“nbr of blocks = 2”。
但我需要
当前的块机制很有趣,这要归功于find(),begin(),... functions / iterators,但我看不出如何专门化它以满足我的要求。
有没有办法实现这个目标?
更新:QTextFragment仅允许修改文字格式。
答案 0 :(得分:1)
我也遭受了这个问题的困扰。
我有两个主意(但都不确定)
我认为可以通过重新实现QAbstractTextDocumentLayout
来实现
覆盖boudingblock方法时,请在该方法中写入QTextLayout()
。
您可以在块中重新定义QTextLayout。
但是它非常缺乏信息。
我尝试自定义我的QTextDocument
,但没有成功。
如果您只想将图块一分为四,
您可以使用QTextLayout.formatRange()
。
设置起始位置,长度,格式。 您可以设置从起始位置开始的长度的特殊格式。
QTextLayout()
本身具有block()
。
您设置了AddAdditionalFormat()。
我想你可以做到的。
QTextBlock
基本上等于一个段落。
您可以通过按Enter键或insertBlock()
来创建新块。
如果不这样做,那么您的句子就会变成一个段落。
我不知道使用方法来拆分块。
我尝试过setBlockCount()
,但没有成功。
我想有一天我会解决这个问题的,但是...