0

我对 QTextDocument::size() 有疑问

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

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

当我使用这个时:

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

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

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

4

2 回答 2

1

您必须将 QDocuments 宽度设置为 QTextEdit 的宽度才能让它知道是否有换行符。之后它返回正确的大小。

例子:

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 是不够的。

于 2015-09-09T08:59:32.253 回答
0

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

于 2015-09-08T22:35:40.417 回答