Класс QTabWidget
Класс QTabWidget предоставляет стопку вкладочных виджетов. Подробнее...
| Заголовок: | #include <QTabWidget> |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Типы
| Перечисление | ПоложениеВкладки { Север, Юг, Запад, Восток } |
| Перечисление | ФормаВкладки { Скругленная, Треугольная } |
Свойства
|
|
Публичные функции
| QTabWidget(QWidget *parent = nullptr) | |
| virtual | ~QTabWidget() |
| int | добавить вкладку(QWidget *page, const QString &label) |
| int | добавить вкладку(QWidget *page, const QIcon &icon, const QString &label) |
| void | очистить() |
| QWidget * | уголковыйВиджет(Qt::Corner corner = Qt::TopRightCorner) const |
| int | количество() const |
| int | текущийИндекс() const |
| QWidget * | текущийВиджет() const |
| bool | режимДокумента() const |
| Qt::TextElideMode | режимУсечения() const |
| QSize | размерИконки() const |
| int | индекс(QWidget *w) const |
| int | вставитьВкладку(int index, QWidget *page, const QString &label) |
| int | вставитьВкладку(int index, QWidget *page, const QIcon &icon, const QString &label) |
| bool | перемещаемые() const |
| bool | включенаВкладка(int index) const |
| void | удалитьВкладку(int index) |
| void | установитьУголковыйВиджет(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner) |
| void | установитьРежимДокумента(bool set) |
| void | установитьРежимУсечения(Qt::TextElideMode) |
| void | установитьРазмерИконки(const QSize &size) |
| void | установитьПеремещаемые(bool movable) |
| void | установитьАвтоскрытиеПанелиВкладок(bool enabled) |
| void | включитьВкладку(int index, bool enable) |
| void | установитьИконкуВкладки(int index, const QIcon &icon) |
| void | установитьПоложениеВкладок(QTabWidget::TabPosition) |
| void | установитьФормуВкладок(QTabWidget::TabShape s) |
| void | установитьТекстВкладки(int index, const QString &label) |
| void | установитьПодсказкуВкладки(int index, const QString &tip) |
| void | установитьWhatsThisВкладки(int index, const QString &text) |
| void | установитьЗакрываемыеВкладки(bool closeable) |
| void | установитьИспользованиеКнопокПрокрутки(bool useButtons) |
| QTabBar * | панельВкладок() const |
| bool | автоскрытиеПанелиВкладок() const |
| QIcon | иконкаВкладки(int index) const |
| QTabWidget::TabPosition | положениеВкладок() const |
| QTabWidget::TabShape | формаВкладок() const |
| QString | текстВкладки(int index) const |
| QString | подсказкаВкладки(int index) const |
| QString | справкаВкладки(int index) const |
| bool | вкладкиЗакрываются() const |
| bool | использоватьКнопкиПрокрутки() const |
| QWidget * | вижет(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) |
Signals
| void | currentChanged(int index) |
| void | tabBarClicked(int index) |
| void | tabBarDoubleClicked(int index) |
| void | tabCloseRequested(int index) |
Protected Functions
| void | initStyleOption(QStyleOptionTabWidgetFrame *option) const |
| void | setTabBar(QTabBar *tb) |
| виртуальный void | tabInserted(int index) |
| виртуальный void | tabRemoved(int index) |
Reimplemented Protected Functions
| виртуальный 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 |
Detailed Description
Виджет QTabWidget предоставляет панель вкладок (см. 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 |
Вкладки отображаются с треугольным видом. |
Документация свойств
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.
[signal] void QTabWidget::currentChanged(int index)
Этот сигнал излучается всякий раз, когда индекс текущей страницы меняется. Параметр — это новое текущее положение страницы index или -1, если его нет (например, если в QTabWidget нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и currentIndex.
[slot] void QTabWidget::setCurrentWidget(QWidget *widget)
Делает widget текущим виджетом. Используемый widget должен быть страницей в этом виджете вкладок.
См. также addTab(), setCurrentIndex() и currentWidget().
[signal] 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.
Если 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
Возвращает виджет, отображаемый в углу виджета вкладок или 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)
Вставляет вкладку с заданным label и page в виджет вкладок по указанному index и возвращает индекс вставленной вкладки в строке вкладок. Владение page передаётся виджету QTabWidget.
Метка отображается на вкладке и может изменяться в зависимости от конфигурации виджета вкладок.
Если 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().
[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.
Передача 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)
Устанавливает иконку для вкладки в позиции 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)
Устанавливает текст справки «Что это?» для страницы в позиции 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.
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
Возвращает текст справки «Что это?» для страницы в позиции 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.14/qtabwidget.html