2

我想感受一下QT,决定写一个小的十六进制编辑器。为此,我需要一个允许滚动的小部件。经过一番研究,我看到 QTextEdit 派生自 QAbstractScrollArea 用于此目的。在阅读 QAbstractScrollArea 的文档时,我发现方法“setViewport()”的描述为“QAbstractScrollArea 将拥有给定小部件的所有权。”。这不适合自行显示的小部件的上下文。它仅适用于 QScrollArea 的上下文。

QT 中创建带有显示其自己内容的滚动条的小部件的适当方法是什么?

4

1 回答 1

2

QAbstactScrollArea不能显示任何“本身”,并且文档明确指出:

QAbstractScrollArea 是滚动区域的低级抽象。该区域提供了一个称为视口的中央小部件,其中将滚动该区域的内容(即,内容的可见部分在视口中呈现)。

视口旁边是一个垂直滚动条,下面是一个水平滚动条。当所有区域内容都适合视口时,每个滚动条可以是可见的或隐藏的,具体取决于滚动条的 Qt::ScrollBarPolicy。当滚动条被隐藏时,视口会扩大以覆盖所有可用空间。当滚动条再次可见时,视口会缩小以便为滚动条腾出空间。

由于它QAbstractScrollArea本身拥有它的 Viewport 的所有权,它非常好,你不需要关心它。您可以将QAbstractScrolArea + Viewportas 视为单个元素的组合,可以将其作为单个元素(当然,复合元素)进行操作,并作为单个元素删除,因为获得一个项目的所有权意味着它将被连同它的主人一起被摧毁。

于 2012-08-13T05:48:28.193 回答