Spec-Zone.ru › Qt 5.12

Класс QRubberBand

Класс QRubberBand предоставляет прямоугольник или линию, которые могут указывать на выделение или границу. Подробнее...

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

Открытые типы

перечисление Shape { Line, Rectangle }

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

QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
виртуальный ~QRubberBand()
void move(int x, int y)
void move(const QPoint &p)
void resize(int width, int height)
void resize(const QSize &size)
void setGeometry(const QRect &rect)
void setGeometry(int x, int y, int width, int height)
QRubberBand::Shape shape() const
  • 214 открытых функций, унаследованных от QWidget
  • 31 открытых функций, унаследованных от QObject
  • 14 открытых функций, унаследованных от QPaintDevice

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

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

Защищённые функции

void initStyleOption(QStyleOptionRubberBand *option) const

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

виртуальный void changeEvent(QEvent *e) override
виртуальный bool event(QEvent *e) override
виртуальный void moveEvent(QMoveEvent *) override
виртуальный void paintEvent(QPaintEvent *) override
виртуальный void resizeEvent(QResizeEvent *) override
виртуальный void showEvent(QShowEvent *e) override
  • 35 защищённых функций, унаследованных от QWidget
  • 9 защищённых функций, унаследованных от QObject
  • 1 защищённая функция, унаследованная от QPaintDevice

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

  • 59 свойств, унаследованных от QWidget
  • 1 свойства, унаследованного от QObject
  • 19 открытых слотов, унаследованных от QWidget
  • 1 открытого слота, унаследованного от QObject
  • 3 сигналов, унаследованных от QWidget
  • 2 сигналов, унаследованных от QObject
  • 1 защищённого слота, унаследованного от QWidget

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

Класс QRubberBand предоставляет прямоугольник или линию, которые могут указывать на выделение или границу.

Резиновая полоса часто используется для отображения новой области ограничителя (например, в QSplitter или QDockWidget, которые открепляются). Исторически это реализовывалось с помощью QPainter и XOR, но этот подход не всегда работает правильно, поскольку рендеринг может происходить в окне ниже резиновой полосы, но до того, как резиновая полоса была «стирается».

Вы можете создать QRubberBand всякий раз, когда вам нужно отобразить резиновую полосу вокруг заданной области (или для представления одной линии), а затем вызвать setGeometry(), move() или resize(), чтобы позиционировать и задать размер. Распространённым шаблоном является выполнение этого в сочетании с событиями мыши. Например:

void Widget::mousePressEvent(QMouseEvent *event)
{
    origin = event->pos();
    if (!rubberBand)
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    rubberBand->hide();
    // determine selection, for example using QRect::intersects()
    // and QRect::contains().
}

Если вы передадите родительский элемент в конструктор QRubberBand, резиновая полоса будет отображаться только внутри своего родителя, но останется поверх других дочерних виджетов. Если родительский элемент не передаётся, QRubberBand будет действовать как виджет верхнего уровня.

Вызовите show(), чтобы сделать резиновую полосу видимой; также когда резиновая полоса не является виджетом верхнего уровня. Скрытие или уничтожение виджета приведет к исчезновению резиновой полосы. Резиновая полоса может быть прямоугольной или линейной (вертикальной или горизонтальной), в зависимости от shape(), которая была задана при её создании.

Документация по типам членов

перечисление QRubberBand::Shape

Это перечисление определяет, какую форму должен иметь QRubberBand. Это подсказка для отрисовки, которая передается в систему стилей, и может интерпретироваться каждым QStyle.

Константа Значение Описание
QRubberBand::Line 0 Резиновая полоса может представлять вертикальную или горизонтальную линию. Геометрия всё ещё задаётся в rect(), и линия заполнит заданную геометрию в большинстве стилей.
QRubberBand::Rectangle 1 Резиновая полоса может представлять прямоугольник. Некоторые стили будут интерпретировать это как заполненный (часто полупрозрачный) прямоугольник или прямоугольную обводку.

Документация по документации функций членов

QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)

Конструирует резиновую полосу формы s с родителем p.

По умолчанию прямоугольная резиновая полоса (s является Rectangle) будет использовать маску, так что видна только небольшая граница прямоугольника. Некоторые стили (например, родной macOS) изменят это и вызовут QWidget::setWindowOpacity(), чтобы создать полупрозрачный заполненный прямоугольник выделения.

[virtual] QRubberBand::~QRubberBand()

Деструктор.

[override virtual protected] void QRubberBand::changeEvent(QEvent *e)

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

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

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

[protected] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const

Инициализирует option значениями из данного QRubberBand. Этот метод полезен для подклассов, когда им нужен QStyleOptionRubberBand, но они не хотят сами заполнять всю информацию.

См. также QStyleOption::initFrom().

void QRubberBand::move(int x, int y)

Перемещает резиновую полосу в точку (x, y).

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

void QRubberBand::move(const QPoint &p)

Это перегруженный метод.

Перемещает резиновый прямоугольник в точку p.

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

[override virtual protected] void QRubberBand::moveEvent(QMoveEvent *)

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

[override virtual protected] void QRubberBand::paintEvent(QPaintEvent *)

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

void QRubberBand::resize(int width, int height)

Изменяет размер резинового прямоугольника так, чтобы его ширина была width, а высота — height.

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

void QRubberBand::resize(const QSize &size)

Это перегруженный метод.

Изменяет размер резинового прямоугольника на новый размер size.

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

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

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

void QRubberBand::setGeometry(const QRect &rect)

Устанавливает геометрию резинового прямоугольника на rect, заданную в системе координат родительского виджета.

См. также QWidget::geometry.

void QRubberBand::setGeometry(int x, int y, int width, int height)

Это перегруженный метод.

Устанавливает геометрию резинового прямоугольника на прямоугольник с верхним левым углом в точке (x, y) и размерами width и height. Геометрия задаётся в системе координат родительского виджета.

QRubberBand::Shape QRubberBand::shape() const

Возвращает форму резинового прямоугольника. Форму можно задать только при создании.

[override virtual protected] void QRubberBand::showEvent(QShowEvent *e)

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

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

Spec-Zone.ru

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