更新 QTextDocument 的大小

Update QTextDocument's size

我对 QTextDocument::size()

有疑问

每次用户在 TextEdit 中手动输入内容时,文档的大小都会更新。 (所以在 SIGNAL textChanged 中它工作正常)。但是,我通过代码插入了一些文本。

textEdit->insertPlainText("blablablabla\n");

当我使用这个时:

int iHeight = textEdit->document()->size().height();

iHeight 始终等于 21,即使 textEdit 有多行文本。当我在我谈到的 SIGNAL 中使用同一行代码时,iHeight 神奇地变成了正确的数字。

所以基本上,我的问题是如何更新文档的大小,使其 returns 正确的数字?

如果在插入纯文本后调用_text->document()->adjustSize();,那么您可以获得正确的高度。

你必须将QDocuments的宽度设置为QTextEdit的宽度,让它知道是否有换行符。之后 returns 大小合适。

示例:

QTextEdit textEdit;
textEdit.setMaximumWidth(50);
textEdit.setText("Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test");
textEdit.document()->adjustSize();
QSizeF size1 = textEdit.document()->size();
textEdit.document()->setTextWidth(textEdit.width());
QSizeF sizew = textEdit.document()->size();
textEdit.show();

确实,adjustSize 不够用。