【发布时间】:2015-09-10 13:55:53
【问题描述】:
我想计算 QTextDocument 中每一行的边界矩形(位置、大小)。我试图绘制每条线提供的矩形,但我遇到了麻烦!
这就是我所做的:
QTextBlock currentBlock = tempDocument->begin();
while (currentBlock.isValid())
{
const int nbLines = currentBlock.layout()->lineCount();
for (int i(0); i < nbLines; ++i)
{
QTextLine currentLine = currentBlock.layout()->lineAt(i);
painter->save();
painter->setPen(QPen(Qt::blue, 1));
painter->drawRect(currentLine.rect());
painter->restore();
}
currentBlock = currentBlock.next();
}
这是我得到的:(请参阅文本 1:Text 1 - 2 - 3)
它并没有真正起作用......所以我尝试自己用类似的东西来做:
float transY(tempDocument->documentMargin());
QTextBlock currentBlock = tempDocument->begin();
while (currentBlock.isValid())
{
const int nbLines = currentBlock.layout()->lineCount();
for (int i(0); i < nbLines; ++i)
{
QTextLine currentLine = currentBlock.layout()->lineAt(i);
currentLine.setLeadingIncluded(true);
painter->save();
painter->setPen(QPen(Qt::blue, 1));
painter->drawRect(QRectF(0, transY, currentLine.width(), currentLine.height()));
painter->restore();
transY += currentLine.height();
}
currentBlock = currentBlock.next();
}
每当我使用从互联网生成的原始文本时,我都会说,这是完美的:
(请参阅文本 2)
但是,如果我在段落中使用相同的文本(
),计算就会完全混乱。如何计算两个段落之间的空间?
(请参阅文本 3)
任何想法或帮助将不胜感激! 谢谢!
PS:抱歉,我本来可以发布图片但我不能!
【问题讨论】:
-
我找到了stackoverflow.com/questions/14792074/…,但它并没有真正帮助我
-
所有文字图片的链接都一样?
-
我只有一个声望点,所以我不能发布图片,我只能发布一个链接。链接后面的图片代表3个文本。根据我上面所说的,每个文本都是不同的情况。我提到了“请看文字1”等。
-
关于我的问题,一条线的宽度并不重要,我真正需要的是每条线的位置和高度。我在一个有很多页面的文本编辑器软件(比如 Word)上工作,我们可以使用浮动文本(QTextDocument)。 如果一行被限制页剪裁,我希望能够将 QTextDocument 一分为二,以便只有整行。