Область с полосами прокрутки

Класс QScrollArea реализует область с полосами прокрутки. Если компонент не помещается в размеры области, то автоматически отображаются полосы прокрутки. Изменение положения полос прокрутки с помощью мыши автоматически приводит к прокрутке содержимого области. Иерархия наследования выглядит так:

(QObject, QPaintDevice) — QWidget — QFrame — 
                          QAbstractScrollArea — QScrollArea

Конструктор класса QScrollArea имеет следующий формат:

#include <QScrollArea>
QScrollArea(QWidget *parent = nullptr)

Класс QScrollArea содержит следующие методы:

  • setWidget() — добавляет компонент в область прокрутки. Прототип метода:
void setWidget(QWidget *widget)
  • widget() — возвращает указатель на компонент, который расположен внутри области. Прототип метода:
QWidget *widget() const
  • setWidgetResizable() — если в качестве параметра указано значение true, то при изменении размеров области будут изменяться и размеры компонента. Значение false запрещает изменение размеров компонента. Прототип метода:
void setWidgetResizable(bool resizable)

Получение значения:

bool widgetResizable() const
  • setAlignment() — задает местоположение компонента внутри области, когда размеры области больше размеров компонента. Прототип метода:
void setAlignment(Qt::Alignment)

Пример:

scrollArea.setAlignment(Qt::AlignCenter);

Получение значения:

Qt::Alignment alignment() const
  • ensureVisible() — прокручивает область к точке с координатами (x, y) и полями xmargin и ymargin. Прототип метода:
void ensureVisible(int x, int y,
                   int xmargin = 50, int ymargin = 50)
  • ensureWidgetVisible() — прокручивает область таким образом, чтобы childWidget был видим. Прототип метода:
void ensureWidgetVisible(QWidget *childWidget,
                         int xmargin = 50, int ymargin = 50)
  • takeWidget() — удаляет компонент из области и возвращает указатель на него. Сам компонент не удаляется. Прототип метода:
QWidget *takeWidget()

Класс QScrollArea наследует следующие методы из класса QAbstractScrollArea (перечислены только основные методы; полный список смотрите в документации):

  • horizontalScrollBar() — возвращает указатель на горизонтальную полосу прокрутки (экземпляр класса QScrollBar). Прототип метода:
QScrollBar *horizontalScrollBar() const
  • verticalScrollBar() — возвращает указатель на вертикальную полосу прокрутки (экземпляр класса QScrollBar). Прототип метода:
QScrollBar *verticalScrollBar() const
  • cornerWidget() — возвращает указатель на компонент, расположенный в правом нижнем углу между двумя полосами прокрутки. Прототип метода:
QWidget *cornerWidget() const
  • viewport() — возвращает указатель на окно области прокрутки. Прототип метода:
QWidget *viewport() const
  • setHorizontalScrollBarPolicy() — устанавливает режим отображения горизонтальной полосы прокрутки. Прототип метода:
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy mode)

Получение значения:

Qt::ScrollBarPolicy horizontalScrollBarPolicy() const
  • setVerticalScrollBarPolicy() — устанавливает режим отображения вертикальной полосы прокрутки. Прототип метода:
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy mode)

Получение значения:

Qt::ScrollBarPolicy verticalScrollBarPolicy() const

В параметре mode могут быть указаны следующие константы:

  • Qt::ScrollBarAsNeeded — полоса прокрутки отображается только в том случае, если размеры компонента больше размеров области;
  • Qt::ScrollBarAlwaysOff — полоса прокрутки никогда не отображается;
  • Qt::ScrollBarAlwaysOn — полоса прокрутки всегда отображается.

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов