Spec-Zone.ru › Qt 5.6

Класс QRubberBand

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

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

Типы публичного доступа

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

Публичные функции

QRubberBand(Shape s, QWidget *p = Q_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)
Shape shape() const
  • 211 публичных функций, унаследованных от QWidget
  • 31 публичных функций, унаследованных от QObject
  • 14 публичных функций, унаследованных от QPaintDevice

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

void initStyleOption(QStyleOptionRubberBand *option) const

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

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

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

  • 58 свойств, унаследованных от QWidget
  • 1 свойства, унаследованного от QObject
  • 19 публичных слотов, унаследованных от QWidget
  • 1 публичного слота, унаследованного от QObject
  • 3 сигналов, унаследованных от QWidget
  • 2 сигналов, унаследованных от QObject
  • 5 статических публичных членов, унаследованных от QWidget
  • 11 статических публичных членов, унаследованных от 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(Shape s, QWidget *p = Q_NULLPTR)

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

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

QRubberBand::~QRubberBand()

Деструктор.

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

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

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

Переопределено из QObject::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().

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

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

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

[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. Геометрия задаётся в системе координат родительского виджета.

Shape QRubberBand::shape() const

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

[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.6/qrubberband.html

Spec-Zone.ru

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