Класс QScrollArea
Класс QScrollArea предоставляет прокручиваемое представление другого виджета. Подробнее...
| Заголовок: | #include <QScrollArea> |
| qmake: | QT += widgets |
| Наследует: | QAbstractScrollArea |
Свойства
- alignment : Qt::Alignment
- widgetResizable : bool
- 3 свойства унаследованы от QAbstractScrollArea
- 6 свойств унаследованы от QFrame
- 59 свойств унаследованы от QWidget
- 1 свойство унаследовано от QObject
Открытые функции
| QScrollArea(QWidget *parent = Q_NULLPTR) | |
| ~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) |
| virtual QSize | sizeHint() const |
- 20 открытых функций унаследованы от QAbstractScrollArea
- 14 открытых функций унаследованы от QFrame
- 214 открытых функций унаследованы от QWidget
- 32 открытых функции унаследованы от QObject
- 14 открытых функций унаследованы от QPaintDevice
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) |
| virtual bool | eventFilter(QObject *o, QEvent *e) |
| virtual void | resizeEvent(QResizeEvent *) |
| virtual void | scrollContentsBy(int dx, int dy) |
| virtual QSize | viewportSizeHint() const |
- 20 защищённых функций унаследованы от QAbstractScrollArea
- 4 защищённых функций унаследованы от QFrame
- 35 защищённых функций унаследованы от QWidget
- 9 защищённых функций унаследованы от QObject
- 1 защищённая функция унаследована от QPaintDevice
Дополнительные наследуемые члены
- 19 открытых слотов унаследованы от QWidget
- 1 открытый слот унаследован от QObject
- 3 сигнала унаследованы от QWidget
- 2 сигнала унаследованы от QObject
- 5 статических открытых членов унаследованы от QWidget
- 11 статических открытых членов унаследованы от QObject
- 20 защищённых функций унаследованы от QAbstractScrollArea
- 4 защищённых функций унаследованы от QFrame
- 35 защищённых функций унаследованы от QWidget
- 9 защищённых функций унаследованы от QObject
- 1 защищённая функция унаследована от QPaintDevice
- 1 защищённый слот унаследован от QWidget
Подробное описание
Класс QScrollArea предоставляет прокручиваемое представление другого виджета.
Область прокрутки используется для отображения содержимого дочернего виджета в рамках фрейма. Если виджет превышает размер фрейма, представление может предоставить полосы прокрутки, чтобы можно было просмотреть всю область дочернего виджета. Дочерний виджет должен быть указан с помощью 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(), чтобы гарантировать правильное отображение содержимого виджета в области прокрутки.
Если область прокрутки используется для отображения содержимого виджета, содержащего дочерние виджеты, организованные в макете, важно понимать, что политика размера макета также определит размер виджета. Это особенно полезно знать, если вы планируете динамически изменять содержимое макета. В таких случаях установка свойства ограничения размера макета на значение, которое устанавливает ограничения на минимальный и/или максимальный размер макета (например, QLayout::SetMinAndMaxSize) приведёт к обновлению размера области прокрутки всякий раз, когда содержимое макета изменяется.
Полный пример использования класса QScrollArea см. в примере Image Viewer. Пример показывает, как комбинировать QLabel и QScrollArea для отображения изображения.
См. также QAbstractScrollArea, QScrollBar и Пример Image Viewer.
Документация свойств
alignment : Qt::Alignment
Это свойство содержит выравнивание виджета области прокрутки.
Допустимое выравнивание — это комбинация следующих флагов:
Qt::AlignLeftQt::AlignHCenterQt::AlignRightQt::AlignTopQt::AlignVCenterQt::AlignBottom
По умолчанию виджет остается привязанным к верхнему левому углу области прокрутки.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| 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 = Q_NULLPTR)
Конструирует пустую область прокрутки с заданным parent.
См. также setWidget().
QScrollArea::~QScrollArea()
Удаляет область прокрутки и ее дочерний виджет.
См. также setWidget().
void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)
Прокручивает содержимое области прокрутки так, чтобы точка (x, y) была видна в области просмотра с отступами, заданными в пикселях xmargin и ymargin. Если указанную точку нельзя достигнуть, содержимое прокручивается до ближайшей допустимой позиции. Значение по умолчанию для обоих отступов составляет 50 пикселей.
void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
Прокручивает содержимое области прокрутки так, чтобы childWidget из QScrollArea::widget() был виден в области просмотра с отступами, заданными в пикселях xmargin и ymargin. Если указанную точку нельзя достигнуть, содержимое прокручивается до ближайшей допустимой позиции. Значение по умолчанию для обоих отступов составляет 50 пикселей.
Эта функция была добавлена в Qt 4.2.
[virtual protected] bool QScrollArea::event(QEvent *e)
Переопределено из QObject::event().
[virtual protected] bool QScrollArea::eventFilter(QObject *o, QEvent *e)
Переопределено из QObject::eventFilter().
[virtual] bool QScrollArea::focusNextPrevChild(bool next)
Переопределено из QWidget::focusNextPrevChild().
[virtual protected] void QScrollArea::resizeEvent(QResizeEvent *)
Переопределено из QWidget::resizeEvent().
[virtual protected] void QScrollArea::scrollContentsBy(int dx, int dy)
Переопределено из QAbstractScrollArea::scrollContentsBy().
void QScrollArea::setWidget(QWidget *widget)
Устанавливает widget области прокрутки.
widget становится дочерним элементом области прокрутки и будет удален при удалении области прокрутки или установке нового виджета.
Свойство autoFillBackground виджета будет установлено в true.
Если область прокрутки видна при добавлении widget, её необходимо явно отобразить с помощью show().
Обратите внимание: необходимо добавить макет widget перед вызовом этой функции; если вы добавите его позже, widget не будет виден — независимо от того, когда вы show() область прокрутки. В этом случае вы также не сможете show() widget позже.
См. также widget().
[virtual] QSize QScrollArea::sizeHint() const
Переопределено из QWidget::sizeHint().
QWidget *QScrollArea::takeWidget()
Удаляет виджет области прокрутки и передает владение им вызывающей стороне.
См. также widget().
[virtual protected] QSize QScrollArea::viewportSizeHint() const
Переопределено из QAbstractScrollArea::viewportSizeHint().
QWidget *QScrollArea::widget() const
Возвращает виджет области прокрутки или 0, если его нет.
См. также setWidget().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qscrollarea.html