c++ - 从 QAbstractScrollArea 派生

标签 c++ qt4

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

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

最佳答案

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

QAbstractScrollArea is a low-level abstraction of a scrolling area. The area provides a central widget called the viewport, in which the contents of the area is to be scrolled (i.e, the visible parts of the contents are rendered in the viewport).

Next to the viewport is a vertical scroll bar, and below is a horizontal scroll bar. When all of the area contents fits in the viewport, each scroll bar can be either visible or hidden depending on the scroll bar's Qt::ScrollBarPolicy. When a scroll bar is hidden, the viewport expands in order to cover all available space. When a scroll bar becomes visible again, the viewport shrinks in order to make room for the scroll bar.

由于 QAbstractScrollArea 本身拥有其视口(viewport)的所有权,因此完全没问题,您无需关心它。您可以将 QAbstractScrollArea + Viewport 的组合视为单个元素,它可以作为单个元素进行操作(当然,是复合元素),也可以作为单个元素进行删除,因为获得元素的所有权意味着该元素将与其所有者一起被销毁。

关于c++ - 从 QAbstractScrollArea 派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928708/

相关文章:

sqlite - 从 QSqlQuery 检索行数,但得到 -1

c++ - 使用 Frama-Clang 插件时出错

user-interface - Qt : what is the difference between layout and widget?

c++ - 在硬件级别使用 ForwardIterator 与 BidirectionalIterator 相比有何作用?

c++ - 行终止符

c++ - 使用 Qt Designer 将 QMainWindow 的角设置为属于停靠小部件区域 (QMainWindow::setCorner)

python - PyQt - 实现 QAbstractTableModel 以在 QTableView 中显示

qt - QT 中非常大的 QImage 和内存映射文件

c++ - 为什么在模板中调用基类的运算符?

c++ - 在 C++ 中从文本文件中读取数值的最快方法(在这种情况下为 double )