Spec-Zone.ru › Qt 5.12

Класс QSplitter

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

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

Свойства

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

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

QSplitter(QWidget *parent = nullptr)
QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~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()
QWidget * replaceWidget(int index, QWidget *widget)
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 override
virtual QSize sizeHint() const override
  • 14 открытых функций унаследовано от QFrame
  • 214 открытых функций унаследовано от QWidget
  • 31 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

Сигналы

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

Статические открытые члены

const QMetaObject staticMetaObject
  • 5 статических открытых членов унаследовано от QWidget
  • 9 статических открытых членов унаследовано от 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) override
virtual void childEvent(QChildEvent *c) override
virtual bool event(QEvent *e) override
virtual void resizeEvent(QResizeEvent *) override
  • 4 защищённых функций унаследовано от QFrame
  • 35 защищённых функций унаследовано от QWidget
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

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

  • 19 public slots унаследовано от QWidget
  • 1 public slot унаследовано от QObject
  • 1 protected slot унаследовано от 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

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

Поведение изменения размера по умолчанию зависит от стиля (определяется подсказкой стиля 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 = nullptr)

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

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

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

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

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

[virtual] QSplitter::~QSplitter()

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

void QSplitter::addWidget(QWidget *widget)

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

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

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

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

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

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

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

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

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

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

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

QSplitterHandle *QSplitter::handle(int index) const

Возвращает разделитель слева от (или над) элемента в макете разделителя с заданным index, или nullptr если такого элемента нет. Разделитель с индексом 0 всегда скрыт.

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

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

int QSplitter::indexOf(QWidget *widget) const

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

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

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

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

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

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

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

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

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

bool QSplitter::isCollapsible(int index) const

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

[override virtual] QSize QSplitter::minimumSizeHint() const

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

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

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

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

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

void QSplitter::refresh()

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

QWidget *QSplitter::replaceWidget(int index, QWidget *widget)

Заменяет виджет в макете разделителя в заданном index на widget.

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

Геометрия нового вставленного виджета будет такой же, как у заменяемого. Его видимое и свёрнутое состояния также наследуются.

Примечание: Разделитель принимает владение widget и устанавливает родителя заменённого виджета в null.

Примечание: Поскольку widget передан в разделитель, его геометрия может не быть установлена сразу, а только после того, как widget получит соответствующие события.

Эта функция была добавлена в Qt 5.9.

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

[override 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, даже если у них есть ненулевой минимальный размер или 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().

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

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

QList<int> QSplitter::sizes() const

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

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

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

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

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

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

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

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

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

QWidget *QSplitter::widget(int index) const

Возвращает виджет в заданном index в макете разделителя, или nullptr если такого виджета нет.

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

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

Spec-Zone.ru

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