我想要感受QT并决定编写一个小的十六进制编辑器。为此,我需要一个允许滚动的小部件。经过一些研究,我看到QTextEdit为此目的从QAbstractScrollArea派生。在阅读QAbstractScrollArea的文档时,我发现方法“setViewport()”的描述为“QAbstractScrollArea将取得给定小部件的所有权。”。这不适合单独显示自身的窗口小部件的上下文。它仅适用于QScrollArea的上下文。
在QT中使用显示其内容的滚动条创建窗口小部件的适当方法是什么?
答案 0 :(得分:2)
QAbstactScrollArea
无法显示任何“本身”,并且文档明确指出:
QAbstractScrollArea是滚动区域的低级抽象。 该区域提供了一个称为视口的中央窗口小部件,其中 该区域的内容将被滚动(即,该区域的可见部分 内容在视口中呈现。
视口旁边是一个垂直滚动条,下面是一个 水平滚动条。当所有的区域内容适合 视口,每个滚动条可以是可见的或隐藏的,具体取决于 滚动条的Qt :: ScrollBarPolicy。当隐藏滚动条时, 视口扩展以覆盖所有可用空间。当滚动 条形图再次可见,视口缩小以腾出空间 滚动条。
由于QAbstractScrollArea
本身拥有它的Viewport的所有权,所以它非常好,你不需要关心它。你可以想到QAbstractScrolArea + Viewport
作为单个元素的组合,它可以作为单个元素运行(当然,复合元素),并作为单个元素删除,因为获取项目的所有权意味着它将与它的所有者一起被销毁。