Spec-Zone.ru › Qt 5.11

Класс QScrollArea

Класс QScrollArea предоставляет прокручиваемый вид на другой виджет. Подробнее...

Заголовок: #include <QScrollArea>
qmake: QT += widgets
Наследует: QAbstractScrollArea
  • Список всех членов, включая унаследованные

Свойства

  • alignment : Qt::Alignment
  • widgetResizable : bool
  • 3 свойства унаследованы от QAbstractScrollArea
  • 6 свойств унаследованы от QFrame
  • 59 свойств унаследованы от QWidget
  • 1 свойство унаследовано от QObject

Открытые функции

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
  • 20 открытых функций унаследованы от QAbstractScrollArea
  • 14 открытых функций унаследованы от QFrame
  • 214 открытых функций унаследованы от QWidget
  • 34 открытых функций унаследованы от QObject
  • 14 открытых функций унаследованы от QPaintDevice

Переопределённые защищённые функции

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
  • 20 защищённых функций унаследованы от QAbstractScrollArea
  • 4 защищённых функций унаследованы от QFrame
  • 35 защищённых функций унаследованы от QWidget
  • 9 защищённых функций унаследованы от QObject
  • 1 защищённая функция унаследована от QPaintDevice

Дополнительные унаследованные члены

  • 19 слотов унаследованы от QWidget
  • 1 слот унаследован от QObject
  • 3 сигнала унаследованы от QWidget
  • 2 сигнала унаследованы от QObject
  • 1 открытая переменная унаследована от QObject
  • 5 статических открытых членов унаследованы от QWidget
  • 10 статических открытых членов унаследованы от QObject
  • 20 защищённых функций унаследованы от QAbstractScrollArea
  • 4 защищённых функций унаследованы от QFrame
  • 35 защищённых функций унаследованы от QWidget
  • 9 защищённых функций унаследованы от QObject
  • 1 защищённая функция унаследована от QPaintDevice
  • 1 защищённый слот унаследован от QWidget
  • 2 защищённых переменных унаследованы от QObject
  • 1 защищённый тип унаследован от QPaintDevice

Подробное описание

Класс 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) заставит размер области прокрутки обновляться всякий раз, когда изменяется содержимое макета.

END_OF_DOCUMENT_MARKER

Для полного примера использования класса QScrollArea, см. пример Image Viewer. Пример демонстрирует, как комбинировать QLabel и QScrollArea для отображения изображения.

См. также QAbstractScrollArea, QScrollBar и Пример Image Viewer.

Документация свойств

alignment : Qt::Alignment

Это свойство содержит выравнивание виджета области прокрутки.

Действительное выравнивание представляет собой комбинацию следующих флагов:

  • Qt::AlignLeft
  • Qt::AlignHCenter
  • Qt::AlignRight
  • Qt::AlignTop
  • Qt::AlignVCenter
  • Qt::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 = nullptr)

Создает пустую область прокрутки с заданным parent.

См. также setWidget().

[virtual] 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.

[override virtual protected] bool QScrollArea::event(QEvent *e)

Переопределено из QAbstractScrollArea::event().

[override virtual protected] bool QScrollArea::eventFilter(QObject *o, QEvent *e)

[override virtual] bool QScrollArea::focusNextPrevChild(bool next)

Переопределено из QWidget::focusNextPrevChild().

[override virtual protected] void QScrollArea::resizeEvent(QResizeEvent *)

Переопределено из QAbstractScrollArea::resizeEvent().

[override 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().

[override virtual] QSize QScrollArea::sizeHint() const

Переопределено из QAbstractScrollArea::sizeHint().

QWidget *QScrollArea::takeWidget()

Удаляет виджет области прокрутки и передает владение виджетом вызывающей стороне.

См. также widget().

[override 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/archives/qt-5.11/qscrollarea.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API