Spec-Zone.ru › Qt 5.13

Класс QScrollArea

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

Заголовок: #include <QScrollArea>
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(), чтобы гарантировать, что содержимое виджета отображается правильно внутри области прокрутки.

Если область прокрутки используется для отображения содержимого виджета, содержащего дочерние виджеты, расположенные в макете, важно понимать, что политика размера макета также определит размер виджета. Это особенно важно знать, если вы планируете динамически изменять содержимое макета. В таких случаях установка свойства ограничения размера макета в значение, которое накладывает ограничения на минимальный и/или максимальный размер макета (например, QLayout::SetMinAndMaxSize) приведёт к обновлению размера области прокрутки всякий раз, когда меняется содержимое макета.

Полный пример с использованием класса 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().

END_OF_DOCUMENT_MARKER

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(QEvent *event).

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

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

Переопределяет: QWidget::focusNextPrevChild(bool next).

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

Переопределяет: QAbstractScrollArea::resizeEvent(QResizeEvent *event).

[override virtual protected] void QScrollArea::scrollContentsBy(int dx, int dy)

Переопределяет: QAbstractScrollArea::scrollContentsBy(int dx, int dy).

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() const.

QWidget *QScrollArea::takeWidget()

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

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

[override virtual protected] QSize QScrollArea::viewportSizeHint() const

Переопределяет: QAbstractScrollArea::viewportSizeHint() const.

QWidget *QScrollArea::widget() const

Возвращает виджет области прокрутки или nullptr, если его нет.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qscrollarea.html

Spec-Zone.ru

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