Spec-Zone.ru › Qt 5.6

Класс QSplitter

Класс QSplitter реализует виджет-разделитель. Подробнее...

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

Свойства

  • childrenCollapsible : bool
  • handleWidth : int
  • opaqueResize : bool
  • orientation : Qt::Orientation
  • 6 свойств унаследовано от QFrame
  • 58 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject

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

QSplitter(QWidget *parent = Q_NULLPTR)
QSplitter(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)
~QSplitter()
void addWidget(QWidget *widget)
bool childrenCollapsible() const
int count() const
void getRange(int index, int *min, int *max) const
QSplitterHandle * handle(int index) const
int handleWidth() const
int indexOf(QWidget *widget) const
void insertWidget(int index, QWidget *widget)
bool isCollapsible(int index) const
bool opaqueResize() const
Qt::Orientation orientation() const
void refresh()
bool restoreState(const QByteArray &state)
QByteArray saveState() const
void setChildrenCollapsible(bool)
void setCollapsible(int index, bool collapse)
void setHandleWidth(int)
void setOpaqueResize(bool opaque = true)
void setOrientation(Qt::Orientation)
void setSizes(const QList<int> &list)
void setStretchFactor(int index, int stretch)
QList<int> sizes() const
QWidget * widget(int index) const

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

virtual QSize minimumSizeHint() const
virtual QSize sizeHint() const
  • 14 открытых функций унаследовано от QFrame
  • 211 открытых функций унаследовано от QWidget
  • 31 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

Сигналы

void splitterMoved(int pos, int index)
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject

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

int closestLegalPosition(int pos, int index)
virtual QSplitterHandle * createHandle()
void moveSplitter(int pos, int index)
void setRubberBand(int pos)

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

virtual void changeEvent(QEvent *ev)
virtual void childEvent(QChildEvent *c)
virtual bool event(QEvent *e)
virtual void resizeEvent(QResizeEvent *)
  • 4 защищённых функций унаследовано от QFrame
  • 35 защищённых функций унаследовано от QWidget
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

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

  • 19 слотов унаследовано от QWidget
  • 1 слот унаследовано от QObject
  • 5 статических открытых членов унаследовано от QWidget
  • 11 статических открытых членов унаследовано от QObject
  • 1 защищённый слот унаследовано от QWidget

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

Класс QSplitter реализует виджет-разделитель.

Разделитель позволяет пользователю управлять размером дочерних виджетов, перетаскивая границу между ними. Любое количество виджетов может быть контролировано одним разделителем. Типичное использование QSplitter состоит в создании нескольких виджетов и добавлении их с помощью insertWidget() или addWidget().

Следующий пример покажет QListView, QTreeView и QTextEdit рядом, с двумя разделителями:

    QSplitter *splitter = new QSplitter(parent);
    QListView *listview = new QListView;
    QTreeView *treeview = new QTreeView;
    QTextEdit *textedit = new QTextEdit;
    splitter->addWidget(listview);
    splitter->addWidget(treeview);
    splitter->addWidget(textedit);

Если виджет уже находится внутри QSplitter при вызове insertWidget() или addWidget(), он будет перемещён в новое положение. Это можно использовать для изменения порядка виджетов в разделителе позже. Вы можете использовать indexOf(), widget() и count() для доступа к виджетам внутри разделителя.

По умолчанию QSplitter выстраивает свои дочерние элементы по горизонтали (бок о бок); можно использовать setOrientation(Qt::Vertical), чтобы выстроить дочерние элементы по вертикали.

По умолчанию все виджеты могут быть как большими, так и маленькими, в пределах значений minimumSizeHint() (или minimumSize()) и maximumSize() виджетов.

QSplitter по умолчанию динамически изменяет размеры своих дочерних элементов. Если нужно, чтобы QSplitter изменял размеры дочерних элементов только в конце операции изменения размера, вызовите setOpaqueResize(false).

Начальное распределение размеров между виджетами определяется умножением начального размера на коэффициент растяжения. Также можно использовать setSizes() для установки размеров всех виджетов. Функция sizes() возвращает размеры, заданные пользователем. Кроме того, можно сохранить и восстановить размеры виджетов из QByteArray с помощью saveState() и restoreState() соответственно.

Когда вы hide() дочерний элемент, его место займут другие дочерние элементы. Он будет восстановлен, когда вы show() его снова.

Примечание: Добавление QLayout в QSplitter не поддерживается (ни через setLayout(), ни путем назначения QSplitter родителем QLayout); используйте addWidget() вместо этого (см. пример выше).

См. также QSplitterHandle, QHBoxLayout, QVBoxLayout и QTabWidget.

Документация свойств

childrenCollapsible : bool

Это свойство указывает, могут ли дочерние виджеты быть пользователем уменьшены до размера 0.

По умолчанию дочерние элементы могут быть уменьшены. Можно включить или отключить сжатие отдельных дочерних элементов, используя setCollapsible().

Функции доступа:

bool childrenCollapsible() const
void setChildrenCollapsible(bool)

См. также setCollapsible().

handleWidth : int

Это свойство определяет ширину разделительных маркеров.

По умолчанию это свойство содержит значение, зависящее от платформы пользователя и его предпочтений в плане стилей.

Если установить handleWidth в 1 или 0, фактическая область захвата будет расширена, чтобы перекрывать несколько пикселей соответствующих виджетов.

Функции доступа:

int handleWidth() const
void setHandleWidth(int)

opaqueResize : bool

Это свойство определяет, является ли изменение размера непрозрачным.

Поведение изменения размера по умолчанию зависит от стиля (определяется стилевым подсказкой SH_Splitter_OpaqueResize). Однако, вы можете переопределить его, вызвав setOpaqueResize().

Функции доступа:

bool opaqueResize() const
void setOpaqueResize(bool opaque = true)

См. также QStyle::StyleHint.

orientation : Qt::Orientation

Это свойство определяет ориентацию разделителя.

По умолчанию ориентация горизонтальная (то есть виджеты выстраиваются бок о бок). Возможные ориентации: Qt::Horizontal и Qt::Vertical.

Функции доступа:

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

См. также QSplitterHandle::orientation().

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

QSplitter::QSplitter(QWidget *parent = Q_NULLPTR)

Конструирует горизонтальный разделитель, передавая аргумент parent конструктору QFrame.

См. также setOrientation().

QSplitter::QSplitter(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)

Конструирует разделитель с заданной orientation и parent.

См. также setOrientation().

QSplitter::~QSplitter()

Уничтожает разделитель. Все дочерние элементы удаляются.

void QSplitter::addWidget(QWidget *widget)

Добавляет указанный widget в макет разделителя после всех других элементов.

Если widget уже находится в разделителе, он будет перемещён в новое положение.

Примечание: Разделитель принимает владение над виджетом.

См. также insertWidget(), widget() и indexOf().

[virtual protected] void QSplitter::changeEvent(QEvent *ev)

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

[virtual protected] void QSplitter::childEvent(QChildEvent *c)

Переопределено из QObject::childEvent().

Сообщает разделителю, что дочерний виджет, описанный в c, был вставлен или удалён.

Этот метод также используется для обработки ситуации, когда виджет создаётся с разделителем в качестве родителя, но не добавляется явно с помощью insertWidget() или addWidget(). Это сделано для совместимости, и это не рекомендуемый способ добавления виджетов в разделитель в новом коде. В новом коде используйте insertWidget() или addWidget().

См. также addWidget() и insertWidget().

[protected] int QSplitter::closestLegalPosition(int pos, int index)

Возвращает ближайшее допустимое положение к pos виджета с индексом index.

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

См. также getRange().

int QSplitter::count() const

Возвращает количество виджетов, содержащихся в макете разделителя.

См. также widget() и handle().

[virtual protected] QSplitterHandle *QSplitter::createHandle()

Возвращает новый маркер разделителя как дочерний виджет этого разделителя. Эта функция может быть переопределена в подклассах для поддержки пользовательских маркеров.

См. также handle() и indexOf().

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

Переопределено из QObject::event().

void QSplitter::getRange(int index, int *min, int *max) const

Возвращает допустимый диапазон разделителя с индексом index в *min и *max, если min и max не равны 0.

QSplitterHandle *QSplitter::handle(int index) const

Возвращает маркер слева (или сверху) для элемента в макете разделителя с заданным index. Маркер с индексом 0 всегда скрыт.

Для языков с направлением письма справа налево, таких как арабский и иврит, макет горизонтальных разделителей инвертируется. Маркер будет справа от виджета с индексом index.

См. также count(), widget(), indexOf(), createHandle() и setHandleWidth().

int QSplitter::indexOf(QWidget *widget) const

Возвращает индекс в макете разделителя указанного widget. Это также работает для маркеров.

Маркеры пронумерованы от 0. Их столько же, сколько и дочерних виджетов, но маркер с позицией 0 всегда скрыт.

См. также count() и widget().

void QSplitter::insertWidget(int index, QWidget *widget)

Вставляет указанный widget в макет разделения по указанному index.

Если widget уже присутствует в разделе, он будет перемещён в новое положение.

Если index — недопустимый индекс, widget будет вставлен в конец.

Примечание: Разделитель принимает владение widget.

См. также addWidget(), indexOf(), и widget().

bool QSplitter::isCollapsible(int index) const

Возвращает true , если элемент по индексу index может быть свёрнут, в противном случае возвращает false.

[virtual] QSize QSplitter::minimumSizeHint() const

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

[protected] void QSplitter::moveSplitter(int pos, int index)

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

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

См. также splitterMoved(), closestLegalPosition(), и getRange().

void QSplitter::refresh()

Обновляет состояние разделителя. Вам обычно не нужно вызывать эту функцию.

[virtual protected] void QSplitter::resizeEvent(QResizeEvent *)

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

bool QSplitter::restoreState(const QByteArray &state)

Восстанавливает макет разделителя до заданного состояния state. Возвращает true если состояние восстановлено; иначе возвращает false.

Обычно используется вместе с QSettings для восстановления размеров из предыдущего сеанса. Вот пример:

Восстановление состояния разделителя:

    QSettings settings;
    splitter->restoreState(settings.value("splitterSizes").toByteArray());

Невозможность восстановления макета разделителя может быть вызвана неверными или устаревшими данными в переданном массиве байтов.

См. также saveState().

QByteArray QSplitter::saveState() const

Сохраняет состояние макета разделителя.

Обычно используется вместе с QSettings для сохранения размеров для будущего сеанса. Версия данных сохраняется как часть данных. Вот пример:

    QSettings settings;
    settings.setValue("splitterSizes", splitter->saveState());

См. также restoreState().

void QSplitter::setCollapsible(int index, bool collapse)

Устанавливает, может ли дочерний виджет по индексу index быть свёрнут в состояние collapse.

По умолчанию, дочерние элементы могут быть свёрнуты, что означает, что пользователь может уменьшить их размер до 0, даже если у них есть ненулевой minimumSize() или minimumSizeHint(). Это поведение может быть изменено для каждого виджета, вызвав эту функцию, или глобально для всех виджетов в разделе, задав свойство childrenCollapsible.

См. также isCollapsible() и childrenCollapsible.

[protected] void QSplitter::setRubberBand(int pos)

Отображает резиновый прямоугольник в позиции pos. Если pos отрицательное, резиновый прямоугольник удаляется.

void QSplitter::setSizes(const QList<int> &list)

Устанавливает размеры дочерних виджетов в соответствии со значениями в списке list.

Если разделитель горизонтальный, значения устанавливают ширину каждого виджета в пикселях слева направо. Если разделитель вертикальный, устанавливается высота каждого виджета сверху вниз.

Дополнительные значения в list игнорируются. Если list содержит слишком мало значений, результат неопределён, но программа будет работать корректно.

Общий размер виджета разделителя не изменяется. Вместо этого любое дополнительное/отсутствующее пространство распределяется между виджетами в соответствии с относительным весом размеров.

Если вы задаёте размер 0, виджет станет невидимым. Политики размера виджетов сохраняются. То есть, значение, меньшее, чем минимальный размер подсказки соответствующего виджета, будет заменено значением подсказки.

См. также sizes().

void QSplitter::setStretchFactor(int index, int stretch)

Обновляет политику размера виджета по индексу index, задавая ему коэффициент растяжения stretch.

stretch не является эффективным коэффициентом растяжения; эффективный коэффициент растяжения вычисляется путём умножения начального размера виджета на stretch.

Эта функция предоставлена для удобства. Она эквивалентна

QWidget *widget = splitter->widget(index);
QSizePolicy policy = widget->sizePolicy();
policy.setHorizontalStretch(stretch);
policy.setVerticalStretch(stretch);
widget->setSizePolicy(policy);

См. также setSizes() и widget().

[virtual] QSize QSplitter::sizeHint() const

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

QList<int> QSplitter::sizes() const

Возвращает список параметров размера всех виджетов в этом разделителе.

Если ориентация разделителя горизонтальная, список содержит ширину виджетов в пикселях слева направо; если ориентация вертикальная, список содержит высоты виджетов в пикселях сверху вниз.

Передача этих значений в функцию setSizes() другого разделителя приведет к созданию разделителя с таким же макетом.

Обратите внимание, что невидимые виджеты имеют размер 0.

См. также setSizes().

[signal] void QSplitter::splitterMoved(int pos, int index)

Этот сигнал испускается, когда ручка разделителя по определённому индексу была перемещена в позицию pos.

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

См. также moveSplitter().

QWidget *QSplitter::widget(int index) const

Возвращает виджет по указанному index в макете разделителя.

См. также count(), handle(), indexOf(), и insertWidget().

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

Spec-Zone.ru

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