Spec-Zone.ru › Qt 5.12

Класс 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
  • 31 открытых функций унаследованы от QObject
  • 14 открытых функций унаследованы от QPaintDevice

Статические открытые члены

const QMetaObject staticMetaObject
  • 5 статических открытых членов унаследованы от QWidget
  • 9 статических открытых членов унаследованы от QObject

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

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

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/qt-5.12/qscrollarea.html

Spec-Zone.ru

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