为什么QTextEdit有时文档高度为0?

为什么QTextEdit有时文档高度为0?,qt,Qt,对于QTextEdit*te我注意到有时te->document()->size()返回(0,0),有时返回实际大小。在这两种情况下,te->toPlainText()返回非空文本 如何使其返回大小? 是否有一些刷新方法,以便文档在刷新后肯定会返回大小?计算文本布局是一项繁重的操作,尤其是当文本较长时,因此必须尽可能延迟。我很确定你在建筑时间的某个地方得到了这个零尺寸 如何克服这个问题? 最好的方法是延迟初始化。在需要某个值之前不要执行计算(如果正确执行,则永远不会得到零大小)。 另一种方法是强

对于QTextEdit*
te
我注意到有时
te->document()->size()
返回(0,0),有时返回实际大小。在这两种情况下,
te->toPlainText()
返回非空文本

如何使其返回大小?
是否有一些刷新方法,以便文档在刷新后肯定会返回大小?

计算文本布局是一项繁重的操作,尤其是当文本较长时,因此必须尽可能延迟。我很确定你在建筑时间的某个地方得到了这个零尺寸

如何克服这个问题?
最好的方法是延迟初始化。在需要某个值之前不要执行计算(如果正确执行,则永远不会得到零大小)。
另一种方法是强制计算文档布局。您可以通过调用
setTextWidth()
setPageSize()
idealWidth()
来完成此任务,具体取决于任务的上下文


idealWidth()
如果您不换行并且没有页面大小,那么它是完美的。

在检查大小之前,尝试调用
QApplication::processEvents()
。它将导致处理所有挂起的Qt事件,因此在此调用之后,所有大小都将更新。请注意,不可见文档可能仍然无法返回正确的大小。

是否使用值初始化*te?因为这可能是一个错误,我们需要知道确切的Qt版本以及您运行的平台(32位与64位、操作系统、编译器、自编译与预编译)。我们还需要一个自包含的测试用例-确保它是单个文件,最好是1-2打行。在检查大小之前,尝试调用
QApplication::processEvents()
。请注意,不可见文档仍可能返回不正确的大小。