我正在开发一个Qt应用程序,我正在尝试找到一种方法,使用QTextEdit作为一个没有滚动条的长文本标签。在我的UI中,我有一个QScrollArea,在其中我想放置几个QTextEdit小部件,并且我只想在QScrollArea内使用滚动。问题是无论如何调整QTextEdit的大小,它似乎都有一个最大高度并且会截断文本,即使我手动设置大小并且QTextEdit::size返回正确的值。
我用QLabel做了同样的事情,它工作得很好,但在这种情况下,我需要一些仅在QTextEdit中提供的方法。
我发现了这篇文章:Resizing QT's QTextEdit to Match Text Height: maximumViewportSize()。
给出的答案如下:
我解决了这个问题。有两件事情我必须做才能让它工作: 1.向上遍历窗口部件层次结构,并确保所有大小策略都有意义,以确保如果任何子窗口部件想要变大/小,则父窗口部件将希望成为相同的东西。 2.这是修复的主要来源。事实证明,由于QTextEdit位于QScrollArea的主窗口部件中,因此QScrollArea有一个约束条件,即除非widgetResizable属性为true,否则它不会调整内部窗口部件的大小。其文档在此处:http://doc.qt.io/qt-4.8/qscrollarea.html#widgetResizable-prop。直到我尝试了这个设置并使其工作,文档才变得清晰明了。从文档中可以看出,此属性仅处理主滚动区域想要调整小部件的情况(即从父级到子级)。实际上,这意味着如果滚动区域中的主窗口部件想要调整大小(即从子级到父级),则必须将此设置设置为true。因此,故事的教训是QTextEdit代码在覆盖sizeHint时是正确的,但QScrollArea忽略了从主框架的sizeHint返回的值。
问题是我不知道如何访问QTextEdit的QScrollArea以启用widgetResizable。有人能解释一下我如何实现这一点或建议一种不同的方法来调整QTextEdit以完美地适应其内容吗?
我用QLabel做了同样的事情,它工作得很好,但在这种情况下,我需要一些仅在QTextEdit中提供的方法。
我发现了这篇文章:Resizing QT's QTextEdit to Match Text Height: maximumViewportSize()。
给出的答案如下:
我解决了这个问题。有两件事情我必须做才能让它工作: 1.向上遍历窗口部件层次结构,并确保所有大小策略都有意义,以确保如果任何子窗口部件想要变大/小,则父窗口部件将希望成为相同的东西。 2.这是修复的主要来源。事实证明,由于QTextEdit位于QScrollArea的主窗口部件中,因此QScrollArea有一个约束条件,即除非widgetResizable属性为true,否则它不会调整内部窗口部件的大小。其文档在此处:http://doc.qt.io/qt-4.8/qscrollarea.html#widgetResizable-prop。直到我尝试了这个设置并使其工作,文档才变得清晰明了。从文档中可以看出,此属性仅处理主滚动区域想要调整小部件的情况(即从父级到子级)。实际上,这意味着如果滚动区域中的主窗口部件想要调整大小(即从子级到父级),则必须将此设置设置为true。因此,故事的教训是QTextEdit代码在覆盖sizeHint时是正确的,但QScrollArea忽略了从主框架的sizeHint返回的值。
问题是我不知道如何访问QTextEdit的QScrollArea以启用widgetResizable。有人能解释一下我如何实现这一点或建议一种不同的方法来调整QTextEdit以完美地适应其内容吗?