Spec-Zone.ru › Qt 5.13

Класс QSplitterHandle

Класс QSplitterHandle предоставляет функциональность ручки для разделителя. Подробнее...

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

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

QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
virtual ~QSplitterHandle()
bool opaqueResize() const
Qt::Orientation orientation() const
void setOrientation(Qt::Orientation orientation)
QSplitter * splitter() const

Переопределённые открытые функции

virtual QSize sizeHint() const override

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

int closestLegalPosition(int pos)
void moveSplitter(int pos)

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

virtual bool event(QEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override
virtual void resizeEvent(QResizeEvent *event) override

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

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

Обычный разработчик, работающий с QSplitter, никогда не должен беспокоиться о QSplitterHandle. Он предоставляется разработчикам, которые хотят, чтобы ручки разделителя предоставляли дополнительные функции, такие как всплывающие меню.

Типичный способ создания ручек разделителя — это наследование от QSplitter, а затем переопределение QSplitter::createHandle() для создания пользовательской ручки разделителя. Например, минимальный класс QSplitter может выглядеть так:

class Splitter : public QSplitter
{
public:
    Splitter(Qt::Orientation orientation, QWidget *parent = 0);

protected:
    QSplitterHandle *createHandle() override;
};

Реализация createHandle() просто создаёт пользовательскую ручку разделителя, называемую Splitter в этом примере:

QSplitterHandle *Splitter::createHandle()
{
    return new SplitterHandle(orientation(), this);
}

Информация о данной ручке может быть получена с помощью функций, таких как orientation() и opaqueResize(), и извлекается из её родительского разделителя. Такая информация может использоваться для придания пользовательским ручкам различных внешних видов в зависимости от ориентации разделителя.

Сложность пользовательского класса-наследника зависит от задач, которые он должен выполнять. Простой подкласс может предоставить только реализацию paintEvent():

void SplitterHandle::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    if (orientation() == Qt::Horizontal) {
        gradient.setStart(rect().left(), rect().height()/2);
        gradient.setFinalStop(rect().right(), rect().height()/2);
    } else {
        gradient.setStart(rect().width()/2, rect().top());
        gradient.setFinalStop(rect().width()/2, rect().bottom());
    }
    painter.fillRect(event->rect(), QBrush(gradient));
}

В этом примере предварительно заданный градиент настраивается по-разному в зависимости от ориентации ручки. QSplitterHandle предоставляет разумный размер для ручки, поэтому подклассу не нужно предоставлять реализацию sizeHint(), если у ручки нет особых требований к размеру.

См. также QSplitter.

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

QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)

Создаёт ручку QSplitter с заданной orientation и parent.

[virtual] QSplitterHandle::~QSplitterHandle()

Деструктор.

[protected] int QSplitterHandle::closestLegalPosition(int pos)

Возвращает ближайшую допустимую позицию к pos для ручки разделителя. Позиции измеряются от левого или верхнего края разделителя, даже для языков с отображением справа налево.

См. также QSplitter::closestLegalPosition() и moveSplitter().

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

Переопределяет: QWidget::event(QEvent *event).

[override virtual protected] void QSplitterHandle::mouseMoveEvent(QMouseEvent *e)

Переопределяет: QWidget::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QSplitterHandle::mousePressEvent(QMouseEvent *e)

Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).

[override virtual protected] void QSplitterHandle::mouseReleaseEvent(QMouseEvent *e)

Переопределяет: QWidget::mouseReleaseEvent(QMouseEvent *event).

[protected] void QSplitterHandle::moveSplitter(int pos)

Указывает разделителю переместить эту ручку в позицию pos, которая является расстоянием от левого или верхнего края виджета.

Обратите внимание, что pos также измеряется слева (или сверху) для языков с отображением справа налево. Эта функция отобразит pos в соответствующую позицию перед вызовом QSplitter::moveSplitter().

См. также QSplitter::moveSplitter() и closestLegalPosition().

bool QSplitterHandle::opaqueResize() const

Возвращает true если виджеты динамически (непрозрачно) изменяют размер во время интерактивного перемещения разделителя. В противном случае возвращает false. Это значение контролируется QSplitter.

См. также QSplitter::opaqueResize().

Qt::Orientation QSplitterHandle::orientation() const

Возвращает ориентацию ручки. Обычно она передаётся от QSplitter.

См. также setOrientation() и QSplitter::orientation().

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

Переопределяет: QWidget::paintEvent(QPaintEvent *event).

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

Переопределяет: QWidget::resizeEvent(QResizeEvent *event).

void QSplitterHandle::setOrientation(Qt::Orientation orientation)

Устанавливает ориентацию ручки разделителя на orientation. Обычно она передаётся от QSplitter.

См. также orientation() и QSplitter::setOrientation().

[override virtual] QSize QSplitterHandle::sizeHint() const

Переопределяет: QWidget::sizeHint() const.

QSplitter *QSplitterHandle::splitter() const

Возвращает разделитель, связанный с этой ручкой разделителя.

См. также QSplitter::handle().

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

Spec-Zone.ru

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