Класс QTabWidget
Класс QTabWidget предоставляет стопку вкладок. Подробнее...
| Заголовок: | #include <QTabWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Открытые типы
| перечисление | TabPosition { Север, Юг, Запад, Восток } |
| перечисление | TabShape { Скругленный, Треугольный } |
Свойства
|
|
Открытые функции
| 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(const 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 |
| bool | isTabVisible(int index) const |
| void | removeTab(int index) |
| void | setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner) |
| void | setDocumentMode(bool set) |
| void | setElideMode(Qt::TextElideMode mode) |
| 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 position) |
| void | setTabShape(QTabWidget::TabShape s) |
| void | setTabText(int index, const QString &label) |
| void | setTabToolTip(int index, const QString &tip) |
| void | setTabVisible(int index, bool visible) |
| 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 |
Переопределенные открытые функции
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int width) const override |
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Public Slots
| void | УстановитьТекущуюВкладку(int index) |
| void | УстановитьТекущийВиджет(QWidget *widget) |
Signals
| void | ИзмененаТекущаяВкладка(int index) |
| void | КликПоПанелиВкладок(int index) |
| void | ДвойнойКликПоПанелиВкладок(int index) |
| void | ЗапросЗакрытияВкладки(int index) |
Protected Functions
| virtual void | ИнициализироватьСтильОпции(QStyleOptionTabWidgetFrame *option) const |
| void | УстановитьПанельВкладок(QTabBar *tb) |
| virtual void | ВставленаВкладка(int index) |
| virtual void | УдаленаВкладка(int index) |
Reimplemented Protected Functions
| virtual void | ОбработкаСобытияИзменения(QEvent *ev) override |
| virtual bool | ОбработатьСобытие(QEvent *ev) override |
| virtual void | ОбработатьНажатиеКлавиши(QKeyEvent *e) override |
| virtual void | ОбработатьОтрисовку(QPaintEvent *event) override |
| virtual void | ОбработатьИзменениеРазмеры(QResizeEvent *e) override |
| virtual void | ОбработатьПоказ(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 и Пример диалога вкладок.
Документация по типам членов
перечисление QTabWidget::TabPosition
Это перечисление определяет, где QTabWidget рисует строку вкладок:
| Константа | Значение | Описание |
|---|---|---|
QTabWidget::North |
0 |
Вкладки отображаются над страницами. |
QTabWidget::South |
1 |
Вкладки отображаются под страницами. |
QTabWidget::West |
2 |
Вкладки отображаются слева от страниц. |
QTabWidget::East |
3 |
Вкладки отображаются справа от страниц. |
перечисление QTabWidget::TabShape
Это перечисление определяет форму вкладок:
| Константа | Значение | Описание |
|---|---|---|
QTabWidget::Rounded |
0 |
Вкладки отображаются с закругленными краями. Это форма по умолчанию. |
QTabWidget::Triangular |
1 |
Вкладки отображаются с треугольной формой. |
Документация свойств
[read-only] 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.
При установке этого свойства рамка виджета вкладок не отображается. Этот режим полезен для отображения страниц типа документов, где страница занимает большую часть области виджета вкладок.
Функции доступа:
| bool | documentMode() const |
| void | setDocumentMode(bool set) |
См. также elideMode, QTabBar::documentMode, QTabBar::usesScrollButtons и QStyle::SH_TabBar_PreferNoArrows.
elideMode : Qt::TextElideMode
способ обрезки текста в ленте вкладок
Это свойство управляет тем, как обрезаются элементы, когда для данной ленты вкладок недостаточно места для их отображения.
По умолчанию значение зависит от стиля.
Функции доступа:
| Qt::TextElideMode | elideMode() const |
| void | setElideMode(Qt::TextElideMode mode) |
См. также QTabBar::elideMode, usesScrollButtons и QStyle::SH_TabBar_ElideMode.
iconSize : QSize
Это свойство задаёт размер значков в ленте вкладок.
Значение по умолчанию зависит от стиля. Это максимальный размер, который будут иметь значки. Значки не будут масштабироваться, если их размер меньше.
Функции доступа:
| QSize | iconSize() const |
| void | setIconSize(const QSize &size) |
См. также QTabBar::iconSize.
movable : bool
Это свойство указывает, могут ли пользователи перемещать вкладки в области ленты вкладок.
По умолчанию это свойство false;
Функции доступа:
| bool | isMovable() const |
| void | setMovable(bool movable) |
[since 5.4] 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 position) |
См. также TabPosition.
tabShape : TabShape
Это свойство определяет форму вкладок в этом виджете вкладок.
Возможные значения для этого свойства — QTabWidget::Rounded (по умолчанию) или QTabWidget::Triangular.
Функции доступа:
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape s) |
См. также TabShape.
tabsClosable : bool
Это свойство определяет, добавляются ли автоматически кнопки закрытия к каждой вкладке.
Функции доступа:
| bool | tabsClosable() const |
| void | setTabsClosable(bool closeable) |
См. также QTabBar::tabsClosable().
usesScrollButtons : bool
Это свойство указывает, должна ли лента вкладок использовать кнопки для прокрутки вкладок, когда у неё много вкладок.
Когда в ленте вкладок слишком много вкладок для её размера, она может либо увеличить свой размер, либо добавить кнопки, которые позволяют прокручивать вкладки.
По умолчанию значение зависит от стиля.
Функции доступа:
| bool | usesScrollButtons() const |
| void | setUsesScrollButtons(bool useButtons) |
См. также elideMode, QTabBar::usesScrollButtons и QStyle::SH_TabBar_PreferNoArrows.
Документация функций-членов
QTabWidget::QTabWidget(QWidget *parent = nullptr)
Создаёт виджет с вкладками с родителем parent.
[signal] void QTabWidget::currentChanged(int index)
Этот сигнал излучается всякий раз, когда изменяется индекс текущей страницы. Параметр — новый индекс текущей страницы index, или -1, если его нет (например, если в QTabWidget нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и currentIndex.
[slot] void QTabWidget::setCurrentWidget(QWidget *widget)
Устанавливает widget в качестве текущего виджета. Используемый widget должен быть страницей в этом виджете вкладок.
См. также addTab(), setCurrentIndex() и currentWidget().
[signal, since 5.2] void QTabWidget::tabBarClicked(int index)
Этот сигнал излучается, когда пользователь нажимает на вкладку по индексу index.
index ссылается на нажатую вкладку или -1, если под курсором нет вкладки.
Эта функция была добавлена в Qt 5.2.
[signal, since 5.2] void QTabWidget::tabBarDoubleClicked(int index)
Этот сигнал излучается, когда пользователь дважды щелкает по вкладке по индексу index.
index — индекс нажатой вкладки, или -1, если под курсором нет вкладки.
Эта функция была введена в Qt 5.2.
[signal] void QTabWidget::tabCloseRequested(int index)
Этот сигнал испускается, когда нажата кнопка закрытия вкладки. Переменная index содержит индекс вкладки, которую нужно удалить.
См. также setTabsClosable().
[virtual] QTabWidget::~QTabWidget()
Удаляет виджет с вкладками.
int QTabWidget::addTab(QWidget *page, const QString &label)
Добавляет вкладку с заданным page и label в виджет с вкладками и возвращает индекс вкладки в панели вкладок. Владение page передаётся QTabWidget.
Если label вкладки содержит амперсанд, то буква, следующая за амперсандом, используется в качестве сочетания клавиш для вкладки, например, если label — "Bro&wse", то Alt+W станет сочетанием клавиш для перехода на эту вкладку.
Примечание: Если вы вызываете 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
Возвращает виджет, отображаемый в corner углу виджета с вкладками или 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(const QWidget *w) const
Возвращает индекс страницы, занятой виджетом w, или -1, если виджет не найден.
[virtual protected] void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const
Инициализирует option значениями из этого QTabWidget. Этот метод полезен для подклассов, когда им нужен QStyleOptionTabWidgetFrame, но они не хотят заполнять всю информацию самостоятельно.
См. также QStyleOption::initFrom() и QTabBar::initStyleOption().
int QTabWidget::insertTab(int index, QWidget *page, const QString &label)
Вставляет вкладку с заданным label и page в виджет с вкладками по указанному index и возвращает индекс вставленной вкладки в панели вкладок. Владение page передаётся QTabWidget.
Текст label отображается на вкладке и может меняться в зависимости от настроек виджета с вкладками.
Если label вкладки содержит амперсанд, то буква, следующая за амперсандом, используется в качестве сочетания клавиш для вкладки, например, если label — "Bro&wse", то Alt+W станет сочетанием клавиш для перехода на эту вкладку.
Если index выходит за пределы диапазона, вкладка просто добавляется в конец. В противном случае она вставляется в указанную позицию.
Если QTabWidget был пустым до вызова этой функции, новая страница становится текущей страницей. Вставка новой вкладки в индекс, меньший или равный текущему индексу, увеличит текущий индекс, но сохранит текущую страницу.
Примечание: Если вы вызываете insertTab() после show(), система компоновки попытается адаптироваться к изменениям в иерархии виджетов, что может привести к мерцанию. Чтобы этого избежать, можно установить свойство QWidget::updatesEnabled в false до внесения изменений; не забудьте установить свойство в true, когда изменения будут завершены, чтобы виджет снова получал события рисования.
См. также addTab().
int QTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)
Это перегруженная функция.
Вставляет вкладку с заданным label, page и icon в виджет с вкладками по указанному index и возвращает индекс вставленной вкладки в панели вкладок. Владение page передаётся QTabWidget.
Эта функция аналогична insertTab(), но с дополнительным параметром icon.
bool QTabWidget::isTabEnabled(int index) const
Возвращает true если страница в позиции index включена; в противном случае возвращает false.
См. также setTabEnabled() и QWidget::isEnabled().
[since 5.15] bool QTabWidget::isTabVisible(int index) const
Возвращает true, если страница в позиции index видима; в противном случае возвращает false.
Эта функция была введена в Qt 5.15.
См. также setTabVisible().
[override virtual protected] void QTabWidget::keyPressEvent(QKeyEvent *e)
Переопределяет: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual] QSize QTabWidget::minimumSizeHint() const
Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.
Возвращает подходящий минимальный размер для виджета с вкладками.
[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 для отображения в указанном corner углу виджета с вкладками. Геометрия виджета определяется на основе его sizeHint() и style().
Используется только горизонтальная составляющая corner.
Передача nullptr не отображает виджет в углу.
Любой ранее установленный виджет угла скрывается.
Все виджеты, установленные здесь, будут удалены виджетом вкладки при его уничтожении, если вы не переместите виджет в другое место после установки другого виджета угла (или 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().
[since 5.15] void QTabWidget::setTabVisible(int index, bool visible)
Если visible имеет значение true, страница в позиции index видна; в противном случае страница в позиции index скрыта. Вкладка страницы перерисовывается соответствующим образом.
Эта функция была введена в Qt 5.15.
См. также isTabVisible().
void QTabWidget::setTabWhatsThis(int index, const QString &text)
Устанавливает текст справки What's This для страницы в позиции index в text.
См. также tabWhatsThis().
[override virtual protected] void QTabWidget::showEvent(QShowEvent *)
Переопределяет: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QTabWidget::sizeHint() const
Переопределяет функцию доступа к свойству: QWidget::sizeHint.
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 или пустую строку, если текст справки не установлен.
См. также 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-6.2/qtabwidget.html