Класс QTabWidget
Класс QTabWidget предоставляет набор виджетов с вкладками. Подробнее...
| Заголовок: | #include <QTabWidget> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Открытые типы
| enum | TabPosition { North, South, West, East } |
| enum | 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 |
| 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 |
Переопределённые открытые функции
| виртуальный 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) |
Реализованные защищенные функции
| виртуальный 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 |
Подробное описание
Виджет 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 и Пример диалогового окна с вкладками.
Документация по типам элементов
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 mode) |
См. также 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 position) |
См. также 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 вкладки содержит амперсанд (&), символ, следующий за амперсандом, используется в качестве сочетания клавиш для вкладки. Например, если 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(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 отображается на вкладке и может иметь различный вид в зависимости от настроек виджета вкладок.
Если 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().
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 для отображения в указанном углу виджета вкладки. Геометрия виджета определяется на основе его sizeHint() и стиля().
Будет использована только горизонтальная часть угла.
Передача 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)
Устанавливает иконку для вкладки на позиции 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::setTabVisible(int index, bool visible)
Если visible имеет значение true, страница на позиции index видима; в противном случае страница на позиции index скрыта. Вкладка страницы перерисовывается соответствующим образом.
Эта функция была добавлена в Qt 5.15.
См. также isTabVisible().
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.15/qtabwidget.html