Класс QTabWidget
Класс QTabWidget предоставляет набор вкладок. Подробнее...
| Заголовок: | #include <QTabWidget> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Типы
| перечисление | TabPosition { North, South, West, East } |
| перечисление | TabShape { Rounded, Triangular } |
Свойства
|
|
Открытые функции
| QTabWidget(QWidget *parent = nullptr) | |
| virtual | ~QTabWidget() |
| int | addTab(QWidget *page, const QString &label) |
| int | addTab(QWidget *page, const QIcon &icon, const QString &label) |
| void | clear() |
| QWidget * | cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const |
| int | count() const |
| int | currentIndex() const |
| QWidget * | currentWidget() const |
| bool | documentMode() const |
| Qt::TextElideMode | elideMode() const |
| QSize | iconSize() const |
| int | indexOf(QWidget *w) const |
| int | insertTab(int index, QWidget *page, const QString &label) |
| int | insertTab(int index, QWidget *page, const QIcon &icon, const QString &label) |
| bool | isMovable() const |
| bool | isTabEnabled(int index) const |
| void | removeTab(int index) |
| void | setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner) |
| void | setDocumentMode(bool set) |
| void | setElideMode(Qt::TextElideMode) |
| void | setIconSize(const QSize &size) |
| void | setMovable(bool movable) |
| void | setTabBarAutoHide(bool enabled) |
| void | setTabEnabled(int index, bool enable) |
| void | setTabIcon(int index, const QIcon &icon) |
| void | setTabPosition(QTabWidget::TabPosition) |
| void | setTabShape(QTabWidget::TabShape s) |
| void | setTabText(int index, const QString &label) |
| void | setTabToolTip(int index, const QString &tip) |
| void | setTabWhatsThis(int index, const QString &text) |
| void | setTabsClosable(bool closeable) |
| void | setUsesScrollButtons(bool useButtons) |
| QTabBar * | tabBar() const |
| bool | tabBarAutoHide() const |
| QIcon | tabIcon(int index) const |
| QTabWidget::TabPosition | tabPosition() const |
| QTabWidget::TabShape | tabShape() const |
| QString | tabText(int index) const |
| QString | tabToolTip(int index) const |
| QString | tabWhatsThis(int index) const |
| bool | tabsClosable() const |
| bool | usesScrollButtons() const |
| QWidget * | widget(int index) const |
Переопределённые открытые функции
| виртуальный bool | hasHeightForWidth() const override |
| виртуальный int | heightForWidth(int width) const override |
| виртуальный QSize | minimumSizeHint() const override |
| виртуальный QSize | sizeHint() const override |
Public Slots
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
Сигналы
| void | currentChanged(int index) |
| void | tabBarClicked(int index) |
| void | tabBarDoubleClicked(int index) |
| void | tabCloseRequested(int index) |
Защищенные функции
| void | initStyleOption(QStyleOptionTabWidgetFrame *option) const |
| void | setTabBar(QTabBar *tb) |
| виртуальный void | tabInserted(int index) |
| виртуальный void | tabRemoved(int index) |
Переопределенные защищенные функции
| виртуальный void | changeEvent(QEvent *ev) override |
| виртуальный bool | event(QEvent *ev) override |
| виртуальный void | keyPressEvent(QKeyEvent *e) override |
| виртуальный void | paintEvent(QPaintEvent *event) override |
| виртуальный void | resizeEvent(QResizeEvent *e) override |
| виртуальный void | showEvent(QShowEvent *) override |
Подробное описание
Виджет вкладок предоставляет панель вкладок (см. QTabBar) и область "страниц", которая используется для отображения страниц, связанных с каждой вкладкой. По умолчанию панель вкладок отображается над областью страниц, но доступны различные конфигурации (см. TabPosition). Каждая вкладка связана с различным виджетом (называемым страницей). Только текущая страница отображается в области страниц; все остальные страницы скрыты. Пользователь может показать другую страницу, щелкнув по ее вкладке или нажав клавиши Alt+буква, если для нее определен такой ярлык.
Обычный способ использования QTabWidget заключается в следующем:
- Создайте QTabWidget.
- Создайте QWidget для каждой из страниц в диалоге вкладок, но не указывайте родительские виджеты для них.
- Вставьте дочерние виджеты в виджет страницы, используя макеты для их позиционирования как обычно.
- Вызовите addTab() или insertTab(), чтобы поместить виджеты страниц в виджет вкладок, присвоив каждой вкладке соответствующую метку с необязательным ярлыком клавиатуры.
Положение вкладок определяется tabPosition, их форма — tabShape.
Сигнал currentChanged() генерируется, когда пользователь выбирает страницу.
Индекс текущей страницы доступен как currentIndex(), текущий виджет страницы — с currentWidget(). Вы можете получить указатель на виджет страницы с заданным индексом с помощью widget(), и можете найти позицию индекса виджета с indexOf(). Используйте setCurrentWidget() или setCurrentIndex() для отображения определенной страницы.
Вы можете изменить текст и значок вкладки, используя setTabText() или setTabIcon(). Вкладку и связанную с ней страницу можно удалить с помощью removeTab().
Каждая вкладка может быть включена или выключена в любой момент (см. setTabEnabled()). Если вкладка включена, текст вкладки отображается обычно, и пользователь может выбрать эту вкладку. Если она выключена, вкладка отображается по-другому, и пользователь не может выбрать эту вкладку. Обратите внимание, что даже если вкладка выключена, страница все равно может быть видна, например, если все вкладки выключены.
Виджеты вкладок могут быть очень полезны для разделения сложных диалогов. Альтернативный вариант — использование QStackedWidget, для которого вы предоставляете способ перемещения между страницами, например, QToolBar или QListWidget.
Большая часть функциональности в QTabWidget обеспечивается QTabBar (в верхней части, предоставляющей вкладки) и QStackedWidget (большая часть области, организующей отдельные страницы).
См. также QTabBar, QStackedWidget, QToolBox, и Пример диалога вкладок.
Документация по типам членов
enum QTabWidget::TabPosition
Этот перечисление определяет, где QTabWidget отображает строку вкладок:
| Постоянная | Значение | Описание |
|---|---|---|
QTabWidget::North |
0 |
Вкладки отображаются над страницами. |
QTabWidget::South |
1 |
Вкладки отображаются под страницами. |
QTabWidget::West |
2 |
Вкладки отображаются слева от страниц. |
QTabWidget::East |
3 |
Вкладки отображаются справа от страниц. |
enum QTabWidget::TabShape
Этот перечисление определяет форму вкладок:
| Постоянная | Значение | Описание |
|---|---|---|
QTabWidget::Rounded |
0 |
Вкладки отображаются с закругленными краями. Это форма по умолчанию. |
QTabWidget::Triangular |
1 |
Вкладки отображаются с треугольной формой. |
Документация свойств
count : const int
Это свойство содержит количество вкладок в панели вкладок.
По умолчанию это свойство содержит значение 0.
Функции доступа:
| int | count() const |
currentIndex : int
Это свойство содержит индекс текущей страницы вкладки.
Текущий индекс равен -1, если нет текущего виджета.
По умолчанию свойство содержит значение -1, поскольку изначально в виджете нет вкладок.
Функции доступа:
| int | currentIndex() const |
| void | setCurrentIndex(int index) |
Сигнал уведомления:
| void | currentChanged(int index) |
documentMode : bool
Это свойство указывает, отображается ли виджет вкладок в режиме, подходящем для страниц документа. Это то же самое, что и режим документа на macOS.
Когда это свойство установлено, рамка виджета вкладок не отображается. Этот режим полезен для отображения страниц типа документов, где страница занимает большую часть области виджета вкладок.
Это свойство было введено в Qt 4.5.
Функции доступа:
| bool | documentMode() const |
| void | setDocumentMode(bool set) |
См. также elideMode, QTabBar::documentMode, QTabBar::usesScrollButtons и QStyle::SH_TabBar_PreferNoArrows.
elideMode : Qt::TextElideMode
как элидировать текст в панели вкладок
Это свойство управляет тем, как элидируются элементы, когда для данной панели вкладок недостаточно места для их отображения.
По умолчанию значение зависит от стиля.
Это свойство было введено в Qt 4.2.
Функции доступа:
| Qt::TextElideMode | elideMode() const |
| void | setElideMode(Qt::TextElideMode) |
См. также QTabBar::elideMode, usesScrollButtons и QStyle::SH_TabBar_ElideMode.
iconSize : QSize
Это свойство содержит размер значков на панели вкладок.
Значение по умолчанию зависит от стиля. Это максимальный размер значков. Значки не масштабируются, если они имеют меньший размер.
Это свойство было введено в Qt 4.2.
Функции доступа:
| QSize | iconSize() const |
| void | setIconSize(const QSize &size) |
См. также QTabBar::iconSize.
movable : bool
Это свойство указывает, могут ли пользователи перемещать вкладки в области панели вкладок.
По умолчанию это свойство равно false;
Это свойство было введено в Qt 4.5.
Функции доступа:
| bool | isMovable() const |
| void | setMovable(bool movable) |
tabBarAutoHide : bool
Если true, панель вкладок автоматически скрывается, когда содержит меньше 2 вкладок.
По умолчанию это свойство равно false.
Это свойство было введено в Qt 5.4.
Функции доступа:
| bool | tabBarAutoHide() const |
| void | setTabBarAutoHide(bool enabled) |
См. также QWidget::visible.
tabPosition : TabPosition
Это свойство определяет положение вкладок в этом виджете вкладок.
Возможные значения для этого свойства описаны в перечислении TabPosition.
По умолчанию это свойство установлено в North.
Функции доступа:
| QTabWidget::TabPosition | tabPosition() const |
| void | setTabPosition(QTabWidget::TabPosition) |
См. также TabPosition.
tabShape : TabShape
Это свойство определяет форму вкладок в этом виджете вкладок.
Возможные значения свойства — QTabWidget::Rounded (по умолчанию) или QTabWidget::Triangular.
Функции доступа:
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape s) |
См. также TabShape.
tabsClosable : bool
Это свойство указывает, добавляются ли автоматически кнопки закрытия к каждой вкладке.
Это свойство было введено в Qt 4.5.
Функции доступа:
| bool | tabsClosable() const |
| void | setTabsClosable(bool closeable) |
См. также QTabBar::tabsClosable().
usesScrollButtons : bool
Это свойство указывает, должна ли панель вкладок использовать кнопки для прокрутки вкладок, когда их много.
Когда на панели вкладок слишком много вкладок для ее размера, панель вкладок может либо увеличить свой размер, либо добавить кнопки, которые позволят прокручивать вкладки.
По умолчанию значение зависит от стиля.
Это свойство было введено в Qt 4.2.
Функции доступа:
| bool | usesScrollButtons() const |
| void | setUsesScrollButtons(bool useButtons) |
См. также elideMode, QTabBar::usesScrollButtons и QStyle::SH_TabBar_PreferNoArrows.
Документация по членам-функциям
QTabWidget::QTabWidget(QWidget *parent = nullptr)
Создаёт виджет вкладок с родителем parent.
void QTabWidget::currentChanged(int index)
Этот сигнал излучается всякий раз, когда индекс текущей страницы изменяется. Параметр — новый индекс текущей страницы index, или -1, если новой страницы нет (например, если в QTabWidget нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и currentIndex.
void QTabWidget::setCurrentWidget(QWidget *widget)
Устанавливает widget в качестве текущего виджета. Используемый widget должен быть страницей в этом виджете вкладок.
См. также addTab(), setCurrentIndex() и currentWidget().
void QTabWidget::tabBarClicked(int index)
Этот сигнал излучается, когда пользователь щелкает вкладку с индексом index.
index относится к нажатой вкладке или к -1, если под курсором нет вкладки.
Эта функция была введена в Qt 5.2.
[signal] void QTabWidget::tabBarDoubleClicked(int index)
Этот сигнал испускается, когда пользователь дважды щелкает по вкладке с индексом index.
index — индекс нажатой вкладки, или -1, если никакая вкладка не находится под курсором.
Эта функция была добавлена в Qt 5.2.
[signal] void QTabWidget::tabCloseRequested(int index)
Этот сигнал испускается, когда нажат значок закрытия вкладки. index — индекс вкладки, которую нужно удалить.
Эта функция была добавлена в Qt 4.5.
См. также setTabsClosable().
[virtual] QTabWidget::~QTabWidget()
Удаляет виджет с вкладками.
int QTabWidget::addTab(QWidget *page, const QString &label)
Добавляет вкладку с заданным page и label в виджет с вкладками и возвращает индекс вкладки в панели вкладок. Владение page передаётся QTabWidget.
Если метка вкладки содержит амперсанд (&), буква, следующая за амперсандом, используется в качестве сочетания клавиш для вкладки. Например, если метка — "Обзор&", то Alt+B станет сочетанием, которое переведёт фокус на эту вкладку.
Примечание: Если вы вызываете addTab() после show(), система макета попытается скорректировать изменения в иерархии виджетов, что может привести к мерцанию. Чтобы этого избежать, можно установить свойство QWidget::updatesEnabled в false перед изменениями; не забудьте установить свойство в true, когда изменения будут выполнены, чтобы виджет снова получал события рисования.
См. также insertTab().
int QTabWidget::addTab(QWidget *page, const QIcon &icon, const QString &label)
Это перегруженная функция.
Добавляет вкладку с заданным page, icon и label в виджет с вкладками и возвращает индекс вкладки в панели вкладок. Владение page передаётся QTabWidget.
Эта функция аналогична addTab(), но с дополнительным параметром icon.
[override virtual protected] void QTabWidget::changeEvent(QEvent *ev)
Переопределяет: QWidget::changeEvent(QEvent *event).
void QTabWidget::clear()
Удаляет все страницы, но не удаляет их. Вызов этой функции эквивалентен вызову removeTab() до тех пор, пока виджет с вкладками не станет пустым.
QWidget *QTabWidget::cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const
Возвращает виджет, отображаемый в углу виджета с вкладками или nullptr.
См. также setCornerWidget().
QWidget *QTabWidget::currentWidget() const
Возвращает указатель на страницу, которая в данный момент отображается в диалоге вкладок. Диалог вкладок делает всё возможное, чтобы это значение никогда не было 0 (но если приложить достаточно усилий, это может произойти).
См. также currentIndex() и setCurrentWidget().
[override virtual protected] bool QTabWidget::event(QEvent *ev)
Переопределяет: QWidget::event(QEvent *event).
[override virtual] bool QTabWidget::hasHeightForWidth() const
Переопределяет: QWidget::hasHeightForWidth() const.
[override virtual] int QTabWidget::heightForWidth(int width) const
Переопределяет: QWidget::heightForWidth(int w) const.
int QTabWidget::indexOf(QWidget *w) const
Возвращает индекс страницы, занятой виджетом w, или -1, если виджет не найден.
[protected] void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const
Инициализирует option значениями из этого QTabWidget. Этот метод полезен для подклассов, когда им нужен QStyleOptionTabWidgetFrame, но они не хотят заполнять всю информацию самостоятельно.
См. также QStyleOption::initFrom() и QTabBar::initStyleOption().
int QTabWidget::insertTab(int index, QWidget *page, const QString &label)
Вставляет вкладку с заданной меткой и page в виджет с вкладками в указанный индекс и возвращает индекс вставленной вкладки в панели вкладок. Владение page передаётся QTabWidget.
Метка отображается на вкладке и может меняться в зависимости от конфигурации виджета с вкладками.
Если метка вкладки содержит амперсанд (&), буква, следующая за амперсандом, используется в качестве сочетания клавиш для вкладки. Например, если метка — "Обзор&", то Alt+B станет сочетанием, которое переведёт фокус на эту вкладку.
Если index выходит за пределы диапазона, вкладка просто добавляется в конец. В противном случае она вставляется в указанную позицию.
Если QTabWidget был пустым до вызова этой функции, новая страница становится текущей страницей. Вставка новой вкладки в индекс, меньший или равный текущему индексу, увеличит текущий индекс, но сохранит текущую страницу.
Примечание: Если вы вызываете insertTab() после show(), система макета попытается скорректировать изменения в иерархии виджетов, что может привести к мерцанию. Чтобы этого избежать, можно установить свойство QWidget::updatesEnabled в false перед изменениями; не забудьте установить свойство в true, когда изменения будут выполнены, чтобы виджет снова получал события рисования.
См. также addTab().
int QTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)
Это перегруженная функция.
Вставляет вкладку с заданной меткой, page и icon в виджет с вкладками в указанный индекс и возвращает индекс вставленной вкладки в панели вкладок. Владение page передаётся QTabWidget.
Эта функция аналогична insertTab(), но с дополнительным параметром icon.
bool QTabWidget::isTabEnabled(int index) const
Возвращает true если страница в позиции index включена; в противном случае возвращает false.
См. также setTabEnabled() и QWidget::isEnabled().
[override virtual protected] void QTabWidget::keyPressEvent(QKeyEvent *e)
Переопределяет: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual] QSize QTabWidget::minimumSizeHint() const
Переопределяет: QWidget::minimumSizeHint() const.
Возвращает подходящий минимальный размер для виджета с вкладками.
[override virtual protected] void QTabWidget::paintEvent(QPaintEvent *event)
Переопределяет: QWidget::paintEvent(QPaintEvent *event).
Рисует панель вкладок виджета с вкладками в ответ на событие рисования event.
void QTabWidget::removeTab(int index)
Удаляет вкладку в позиции index из этого стека виджетов. Сам виджет страницы не удаляется.
См. также addTab() и insertTab().
[override virtual protected] void QTabWidget::resizeEvent(QResizeEvent *e)
Переопределяет: QWidget::resizeEvent(QResizeEvent *event).
void QTabWidget::setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)
Устанавливает указанный widget для отображения в указанном углу виджета с вкладками. Геометрия виджета определяется на основе его sizeHint() и стиля().
Используется только горизонтальная составляющая угла.
Передача 0 скрывает виджет в углу.
Любой ранее установленный виджет угла скрывается.
Все виджеты, установленные здесь, будут удалены виджетом вкладки при его уничтожении, если вы не переместите виджет в другое место после установки другого виджета угла (или nullptr).
Примечание: Виджеты угла предназначены для положений вкладок Север и Юг; другие ориентации могут работать некорректно.
См. также cornerWidget() и setTabPosition().
[protected] void QTabWidget::setTabBar(QTabBar *tb)
Заменяет заголовок диалогового окна QTabBar на вкладку tb. Обратите внимание, что это необходимо выполнить *до* добавления вкладок, иначе поведение не определено.
См. также tabBar().
void QTabWidget::setTabEnabled(int index, bool enable)
Если enable имеет значение true, страница в позиции index включена; в противном случае страница в позиции index отключена. Вкладка страницы перерисовывается соответствующим образом.
QTabWidget использует QWidget::setEnabled() внутри, а не хранит отдельный флаг.
Обратите внимание, что даже отключенная вкладка/страница может быть видимой. Если страница уже видна, QTabWidget не будет скрывать её; если все страницы отключены, QTabWidget отобразит одну из них.
См. также isTabEnabled() и QWidget::setEnabled().
void QTabWidget::setTabIcon(int index, const QIcon &icon)
Устанавливает icon для вкладки в позиции index.
См. также tabIcon().
void QTabWidget::setTabText(int index, const QString &label)
Определяет новую метку для вкладки страницы в позиции index.
Если предоставленный текст содержит символ амперсанд ('&'), для него автоматически создаётся сочетание клавиш. Символ, следующий за '&', будет использоваться в качестве клавиши сочетания. Любое предыдущее сочетание клавиш будет перезаписано или удалено, если сочетание клавиш не определено текстом. Подробности см. в документации QShortcut (чтобы отобразить фактический символ амперсанда, используйте '&&').
См. также tabText().
void QTabWidget::setTabToolTip(int index, const QString &tip)
Устанавливает подсказку инструмента для вкладки страницы в позиции index на tip.
См. также tabToolTip().
void QTabWidget::setTabWhatsThis(int index, const QString &text)
Устанавливает текст справки What's This для страницы в позиции index на text.
Эта функция была добавлена в Qt 4.1.
См. также tabWhatsThis().
[override virtual protected] void QTabWidget::showEvent(QShowEvent *)
Переопределяет: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QTabWidget::sizeHint() const
Переопределяет: QWidget::sizeHint() const.
QTabBar *QTabWidget::tabBar() const
Возвращает текущую QTabBar.
См. также setTabBar().
QIcon QTabWidget::tabIcon(int index) const
Возвращает значок для вкладки на странице в позиции index.
См. также setTabIcon().
[virtual protected] void QTabWidget::tabInserted(int index)
Этот виртуальный обработчик вызывается после добавления или вставки новой вкладки в позицию index.
См. также tabRemoved().
[virtual protected] void QTabWidget::tabRemoved(int index)
Этот виртуальный обработчик вызывается после удаления вкладки из позиции index.
См. также tabInserted().
QString QTabWidget::tabText(int index) const
Возвращает текст метки для вкладки на странице в позиции index.
См. также setTabText().
QString QTabWidget::tabToolTip(int index) const
Возвращает подсказку инструмента для вкладки страницы в позиции index или пустую строку, если подсказка инструмента не была установлена.
См. также setTabToolTip().
QString QTabWidget::tabWhatsThis(int index) const
Возвращает текст справки What's This для страницы в позиции index, или пустую строку, если текст справки не был задан.
Эта функция была добавлена в Qt 4.1.
См. также setTabWhatsThis().
QWidget *QTabWidget::widget(int index) const
Возвращает вкладку страницы в позиции индекса index или nullptr если index находится вне диапазона.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtabwidget.html