Класс 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.
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.15/qsplitterhandle.html