【发布时间】:2018-05-22 11:04:46
【问题描述】:
我正在开发一个 Qt 应用程序,我正在尝试找到一种方法将 QTextEdit 用作 label 并带有长文本而没有滚动条。在我的用户界面中,我有一个QScrollArea,在其中我想放置几个关闭QTextEdit 小部件,我只想在QScrollArea 内使用滚动。问题是,无论我如何尝试调整 QTextEdit 的大小,它似乎都有最大高度和文本剪切,即使我手动设置大小并且 QTextEdit::size 返回正确的值。
我对@987654329@ 做了同样的事情,它工作正常,但在这种情况下,我需要一些仅在QTextEdit 中提供的方法。
我发现了这个帖子: Resizing QT's QTextEdit to Match Text Height: maximumViewportSize()
给出的答案如下:
我已经解决了这个问题。我必须做两件事才能得到 它的工作:
- 查看小部件层次结构并确保制定了所有尺寸策略 确保如果任何子小部件想要大/小,那么 父小部件希望是同一件事。
- 这是主要的 修复的来源。事实证明,由于 QTextEdit 在 QFrame 是 QScrollArea 中的主要小部件,QScrollArea 有一个 约束它不会调整内部小部件的大小,除非 “widgetResizable”属性为真。文档是 在这里:http://doc.qt.io/qt-4.8/qscrollarea.html#widgetResizable-prop。 在我玩弄这个之前,我并不清楚文档 设置并让它工作。从文档看来,这个属性 仅处理主滚动区域想要调整大小的时间 小部件(即从父级到子级)。这实际上意味着如果主 滚动区域中的小部件想要调整大小(即从子到父), 那么这个设置必须设置为true。所以,这个故事的寓意是 QTextEdit 代码在覆盖 sizeHint 时是正确的,但是 QScrollArea 忽略了从主框架返回的值 大小提示。
问题是我不知道如何访问QTextEdit's QScrollArea 来启用widgetResizable。谁能解释我如何实现这一点或建议调整QTextEdit 大小以完全适合其内容的不同方式?
【问题讨论】:
-
你不能访问QTextEdit的QScrollArea,因为它不是QScrollArea,它继承自没有setWidgetResizable标志的QAbstractScrollArea
标签: c++ qt resize qtextedit qscrollarea