从QAbstractScrollArea派生

时间:2012-08-13 05:41:03

标签: c++ qt4

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

在QT中使用显示其内容的滚动条创建窗口小部件的适当方法是什么?

1 个答案:

答案 0 :(得分:2)

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

  

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

     

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

由于QAbstractScrollArea本身拥有它的Viewport的所有权,所以它非常好,你不需要关心它。你可以想到QAbstractScrolArea + Viewport作为单个元素的组合,它可以作为单个元素运行(当然,复合元素),并作为单个元素删除,因为获取项目的所有权意味着它将与它的所有者一起被销毁。