Spec-Zone.ru › Qt 5.9

Класс 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 = 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()
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
virtual QSize sizeHint() const
  • 14 открытых функций унаследовано от QFrame
  • 214 открытых функций унаследовано от QWidget
  • 32 открытых функции унаследовано от 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)

Создаёт разделитель с заданной ориентацией и родительским элементом.

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

QSplitter::~QSplitter()

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

void QSplitter::addWidget(QWidget *widget)

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

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

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

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

void QSplitter::changeEvent(QEvent *ev)

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

void QSplitter::childEvent(QChildEvent *c)

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

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

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

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

int QSplitter::closestLegalPosition(int pos, int index)

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

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

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

int QSplitter::count() const

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

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

QSplitterHandle *QSplitter::createHandle()

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

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

bool QSplitter::event(QEvent *e)

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

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

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

QSplitterHandle *QSplitter::handle(int index) const

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

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

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

int QSplitter::indexOf(QWidget *widget) const

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

Ручки нумеруются с 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.

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

[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)

Этот сигнал генерируется, когда ручка разделителя в определенном 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/qt-5.9/qsplitter.html

Spec-Zone.ru

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