QScrollArea 类
QScrollArea 类提供对另一个小部件的滚动视图。 更多...
头文件 | #include <QScrollArea> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QAbstractScrollArea |
属性
- alignment : Qt::Alignment
- widgetResizable : bool
公共函数
QScrollArea(QWidget *parent = nullptr) | |
virtual | ~QScrollArea() |
Qt::Alignment | alignment() const |
void | ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50) |
void | ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50) |
void | setAlignment(Qt::Alignment) |
void | setWidget(QWidget *widget) |
void | setWidgetResizable(bool resizable) |
QWidget * | takeWidget() |
QWidget * | widget() const |
bool | widgetResizable() const |
重实现的公共函数
virtual bool | focusNextPrevChild(bool next) override |
virtual QSize | sizeHint() const override |
重实现的受保护函数
virtual bool | event(QEvent *e) override |
virtual bool | eventFilter(QObject *o, QEvent *e) override |
virtual void | resizeEvent(QResizeEvent *) override |
virtual void | scrollContentsBy(int dx, int dy) override |
virtual QSize | viewportSizeHint() const override |
详细描述
滚动区域用于在框架中显示子小部件的内容。如果小部件超出框架大小,视图可以提供滚动条以便查看子小部件的整个区域。必须使用 setWidget() 来指定子小部件。例如
QLabel *imageLabel = new QLabel; QImage image("happyguy.png"); imageLabel->setPixmap(QPixmap::fromImage(image)); scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel);
上面的代码创建了一个包含图像标签的滚动区域(如下面的图片所示)。当调整图像大小时,滚动区域可以提供所需的滚动条
滚动条的外观取决于当前设置的滚动条策略。您可以使用来自QAbstractScrollArea的继承功能来控制滚动条的外观。
例如,您可以设置QAbstractScrollArea::horizontalScrollBarPolicy和QAbstractScrollArea::verticalScrollBarPolicy属性。或者,如果您想让滚动条在滚动区域内容变化时动态调整,可以使用horizontalScrollBar()和verticalScrollBar()函数(这些函数可以让你访问滚动条)并通过使用QScrollBar::setValue()函数在滚动区域内容变化时设置滚动条的值。
您可以使用widget()函数获取子小部件。视图可以使用setWidgetResizable()函数使可调整大小。可以使用setAlignment()指定小部件的对齐方式。
两个便利函数ensureVisible()和ensureWidgetVisible()通过必要的滚动内容确保内容的某个区域在视口中可见。
大小提示和布局
在将滚动区域用于显示自定义小部件的内容时,确保小部件的大小提示设置为合适的值非常重要。如果使用标准QWidget作为子小部件,可能需要调用QWidget::setMinimumSize()以确保小部件的内容在滚动区域中正确显示。
如果使用滚动区域来显示包含在小部件中布局的子小部件的内容,重要的是要意识到布局的大小策略也将确定小部件的大小。如果您打算动态地更改布局的内容,这一点尤为重要。在这种情况下,将布局的size constraint属性设置为提供对布局最小和/或最大尺寸约束的属性(例如,QLayout::SetMinAndMaxSize),将导致滚动区域的大小在布局内容变化时更新。
另请参阅QAbstractScrollArea和QScrollBar。
属性文档
alignment : Qt::Alignment
此属性包含滚动区域小部件的对齐方式
有效对齐是以下标志的组合
Qt::AlignLeft
Qt::AlignHCenter
Qt::AlignRight
Qt::AlignTop
Qt::AlignVCenter
Qt::AlignBottom
默认情况下,小部件保持在滚动区域左上角的位置。
访问函数
Qt::Alignment | alignment() const |
void | setAlignment(Qt::Alignment) |
widgetResizable : bool
此属性包含滚动区域是否应该调整视图小部件的大小
如果将此属性设置为false(默认值),则滚动区域将尊重其小部件的大小。无论此属性如何,您都可以使用widget()->resize()来程序化地调整小部件的大小,滚动区域将自动调整自己以适应新的大小。
如果将此属性设置为true,则滚动区域将自动调整小部件的大小,以避免不必要的滚动条,或利用额外的空间。
访问函数
bool | widgetResizable() const |
void | setWidgetResizable(bool resizable) |
成员函数文档
[显式]
QScrollArea::QScrollArea(QWidget *parent = nullptr)
根据给定的parent构造一个空的滚动区域。
另请参阅setWidget().
[虚拟 noexcept]
QScrollArea::~QScrollArea()
销毁滚动区域及其子部件。
另请参阅setWidget().
void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)
滚动滚动区域的内容,使点(x, y)在具有通过
void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
滚动滚动区域的内容,使QScrollArea::widget()的 childWidget 在视口内可见,并且通过
[覆盖虚受保护]
bool QScrollArea::event(QEvent *e)
重实现:QAbstractScrollArea::event(QEvent *event).
[覆盖虚受保护]
bool QScrollArea::eventFilter(QObject *o, QEvent *e)
重实现:QObject::eventFilter(QObject *watched, QEvent *event).
[覆盖虚]
bool QScrollArea::focusNextPrevChild(bool next)
重实现:QWidget::focusNextPrevChild(bool next).
[覆盖虚受保护]
void QScrollArea::resizeEvent(QResizeEvent *)
重实现:QAbstractScrollArea::resizeEvent(QResizeEvent *event).
[覆盖虚受保护]
void QScrollArea::scrollContentsBy(int dx, int dy)
重实现:QAbstractScrollArea::scrollContentsBy(int dx, int dy).
void QScrollArea::setWidget(QWidget *widget)
设置滚动区域widget。
该widget成为滚动区域的子项,并且在滚动区域被删除或设置新控件时将被销毁。
小部件的 autoFillBackground 属性将被设置为 true
。
如果在小部件 添加时 滚动区域可见,您必须显式地调用 show()。
请注意,您必须在小部件之前调用此函数之前添加布局;如果稍后添加,小部件将不可见 - 无论您何时通过 show() 滚动区域。在这种情况下,您也不能稍后通过 show() 小部件。
另请参阅小部件。
[覆盖虚函数]
QSize QScrollArea::sizeHint() const
重实现: QAbstractScrollArea::sizeHint() const。
QWidget *QScrollArea::takeWidget()
移除滚动区域的小部件,并将小部件的所有权传递给调用者。
另请参阅小部件。
[覆盖虚受保护函数]
QSize QScrollArea::viewportSizeHint() const
重实现: QAbstractScrollArea::viewportSizeHint() const。
QWidget *QScrollArea::widget() const
返回滚动区域的小部件,如果没有则返回 nullptr
。
另请参阅setWidget().
© 2024 The Qt Company Ltd. 本文档贡献的文档版权属于其各自的所有者。本提供的文档根据自由软件基金会的发布,许可使用 GNU自由文档许可版1.3。Qt及相应的标志是芬兰及/或全球其他地区The Qt Company Ltd的商标。其他所有商标属于其各自的所有者。