Spec-Zone.ru › Qt 5.9

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

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

  • 59 свойств унаследовано от 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/qt-5.9/qrubberband.html

Spec-Zone.ru

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