Spec-Zone.ru › Qt 5.11

Класс QRubberBand

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

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

Типы public

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

Функции public

QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
virtual ~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 функций public, унаследованных от QWidget
  • 34 функций public, унаследованных от QObject
  • 14 функций public, унаследованных от QPaintDevice

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

void initStyleOption(QStyleOptionRubberBand *option) const

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

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

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

  • 59 свойств, унаследованных от QWidget
  • 1 свойства, унаследованного от QObject
  • 19 слотов public, унаследованных от QWidget
  • 1 слота public, унаследованного от QObject
  • 3 сигналов, унаследованных от QWidget
  • 2 сигналов, унаследованных от QObject
  • 1 переменной public, унаследованной от QObject
  • 5 статических public членов, унаследованных от QWidget
  • 10 статических public членов, унаследованных от QObject
  • 1 защищенный слот, унаследованный от QWidget
  • 2 защищенных переменных, унаследованных от QObject
  • 1 защищенный тип, унаследованный от QPaintDevice

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

Класс 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 QRubberBand может представлять вертикальную или горизонтальную линию. Геометрия все равно задается в rect(), и линия будет заполнять заданную геометрию в большинстве стилей.
QRubberBand::Rectangle 1 QRubberBand может представлять прямоугольник. Некоторые стили будут интерпретировать это как заполненный (часто полупрозрачный) прямоугольник или прямоугольную обводку.

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

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/archives/qt-5.11/qrubberband.html

Spec-Zone.ru

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