QTabWidget类

QTabWidget类提供一组标签控件。 更多信息...

头文件 #include <QTabWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QWidget

公共类型

枚举TabPosition { North, South, West, East }
枚举TabShape { Rounded, Triangular }

属性

公共函数

QTabWidget(QWidget *parent = nullptr)
虚拟~QTabWidget()
intaddTab(QWidget *page, const QString &label)
intaddTab(QWidget *page, const QIcon &icon, const QString &label)
voidclear()
QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const
intcount() const
intcurrentIndex() const
QWidget *currentWidget() const
布尔值documentMode() const
Qt::TextElideModeelideMode() const
QSizeiconSize() const
intindexOf(const QWidget *w) const
intinsertTab(int index, QWidget *page, const QString &label)
intinsertTab(int index, QWidget *page, const QIcon &icon, const QString &label)
布尔值isMovable() const
布尔值isTabEnabled(int index) const
布尔值isTabVisible(int index) const
voidremoveTab(int index)
voidsetCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)
voidsetDocumentMode(bool set)
voidsetElideMode(Qt::TextElideMode mode)
voidsetIconSize(const QSize &size)
voidsetMovable(bool movable)
voidsetTabBarAutoHide(bool enabled)
voidsetTabEnabled(int index, bool enable)
voidsetTabIcon(int index, const QIcon &icon)
voidsetTabPosition(QTabWidget::TabPosition position)
voidsetTabShape(QTabWidget::TabShape s)
voidsetTabText(int index, const QString &label)
voidsetTabToolTip(int index, const QString &tip)
voidsetTabVisible(int index, bool visible)
voidsetTabWhatsThis(int index, const QString &text)
voidsetTabsClosable(bool closeable)
voidsetUsesScrollButtons(bool useButtons)
QTabBar *tabBar() const
布尔值tabBarAutoHide() const
QIcontabIcon(int index) const
QTabWidget::TabPositiontabPosition() const
QTabWidget::TabShapetabShape() const
QStringtabText(int index) const
QStringtabToolTip(int index) const
QStringtabWhatsThis(int index) const
布尔值tabsClosable() const
布尔值usesScrollButtons() const
QWidget *widget(int index) const

重写的公共函数

虚函数hasHeightForWidth() const 覆盖
虚函数heightForWidth(int width) const 覆盖
虚函数minimumSizeHint() const 覆盖
虚函数sizeHint() const 覆盖

公共槽

voidsetCurrentIndex(int index)
voidsetCurrentWidget(QWidget *widget)

信号

voidcurrentChanged(int index)
voidtabBarClicked(int index)
voidtabBarDoubleClicked(int index)
voidtabCloseRequested(int index)

受保护的函数

虚函数initStyleOption(QStyleOptionTabWidgetFrame *option) const
voidsetTabBar(QTabBar *tb)
虚函数tabInserted(int index)
虚函数tabRemoved(int index)

重写的受保护函数

虚函数changeEvent(QEvent *ev) override
虚函数event(QEvent *ev) override
虚函数keyPressEvent(QKeyEvent *e) override
虚函数paintEvent(QPaintEvent *event) override
虚函数resizeEvent(QResizeEvent *e) override
虚函数showEvent(QShowEvent *) override

详细描述

标签小部件提供标签栏(请参阅 QTabBar)和用于显示与每个标签相关的页面的“页面区域”。默认情况下,标签栏显示在页面区域上方,但提供了不同的配置(请参阅 TabPosition)。每个标签都与不同的部件(称为页面)相关联。只有当前页面在页面区域内显示;其他所有页面都隐藏。用户可以通过单击其标签或按其 Alt+字母 快捷键(如果有的话)来显示不同的页面。

使用 QTabWidget 的正常方法如下

  1. 创建一个 QTabWidget。
  2. 为标签对话框中的每个页面创建一个 QWidget,但不要为它们指定父部件。
  3. 将子部件插入页面部件中,使用布局来定位它们,如通常那样。
  4. 调用 addTab() 或 insertTab() 将页面部件放入标签部件中,为每个标签提供一个合适的标签和可选的键盘快捷键。

标签的位置由 tabPosition 定义,它们的形状由 tabShape 定义。

当用户选择一个页面时,会发出 currentChanged() 信号。

当前页面索引可用作 currentIndex(),当前页面部件使用 currentWidget()。您可以使用 widget() 获取指向具有给定索引的页面部件的指针,并可以使用 indexOf() 找到部件的索引位置。使用 setCurrentWidget() 或 setCurrentIndex() 显示特定页面。

您可以使用 setTabText() 或 setTabIcon() 来更改标签的文本和图标。可以使用 removeTab() 移除标签及其关联的页面。

在任何给定时间,标签可以启用或禁用(请参阅 setTabEnabled())。如果标签被启用,标签文本会正常绘制,并且用户可以选择该标签。如果它被禁用,标签将以不同的方式绘制,并且用户不能选择该标签。请注意,即使标签被禁用,页面仍然可以可见,例如,如果所有标签都恰巧被禁用。

标签小部件是一种将复杂对话框拆分得非常好的方法。另一种方法是使用 QStackedWidget,您可以为其提供在页面之间导航的某种方式,例如,一个 QToolBar 或一个 QListWidget

QTabWidget 中的大部分功能都是由一个 QTabBar(在顶部,提供标签)和一个 QStackedWidget(大多数区域,组织单个页面)提供的。

另请参阅 QTabBarQStackedWidgetQToolBox标签对话框示例

成员类型文档

enum QTabWidget::TabPosition

此枚举类型定义了 QTabWidget 绘制标签行位置

常量说明
QTabWidget::North0标签被绘制在页面上方。
QTabWidget::South1标签被绘制在页面下方。
QTabWidget::West2标签被绘制在页面左侧。
QTabWidget::East3标签被绘制在页面右侧。

enum QTabWidget::TabShape

此枚举类型定义了标签的形状

常量说明
QTabWidget::Rounded0标签被绘制成圆角形状。这是默认形状。
QTabWidget::Triangular1标签被绘制成三角形形状。

属性文档

[只读] count : const int

此属性保存标签栏中的标签数量

默认情况下,此属性包含的值为0。

访问函数

intcount() const

currentIndex : int

此属性保存当前标签页的索引位置

如果没有当前小部件,当前索引为-1。

默认情况下,此属性包含的值为-1,因为最初小部件中没有标签。

访问函数

intcurrentIndex() const
voidsetCurrentIndex(int index)

通知信号

voidcurrentChanged(int index)

documentMode : bool

此属性保存是否将标签小部件渲染为适合文档页面的模式。这与 MacOS 上的文档模式相同。

设置此属性时,不渲染标签小部件框架。此模式适用于显示页面覆盖标签小部件大部分区域的文档类型页面。

访问函数

布尔值documentMode() const
voidsetDocumentMode(bool set)

另请参阅 elideModeQTabBar::documentModeQTabBar::usesScrollButtonsQStyle::SH_TabBar_PreferNoArrows

elideMode : Qt::TextElideMode

如何截断标签栏中的文本

此属性控制当给定标签栏大小没有足够空间显示项时,如何截断项。

默认情况下,该值取决于样式。

访问函数

Qt::TextElideModeelideMode() const
voidsetElideMode(Qt::TextElideMode mode)

另请参阅 QTabBar::elideModeusesScrollButtonsQStyle::SH_TabBar_ElideMode

iconSize : QSize

此属性保存标签栏中图标的大小

默认值取决于样式。这是图标可能达到的最大大小。如果图标的尺寸更小,则不会放大图标。

访问函数

QSizeiconSize() const
voidsetIconSize(const QSize &size)

另请参阅QTabBar::iconSize.

movable : bool

该属性表示用户是否可以在选项卡栏区域内移动选项卡。

默认情况下,此属性为 false;

访问函数

布尔值isMovable() const
voidsetMovable(bool movable)

tabBarAutoHide : bool

如果为真,当选项卡栏包含少于2个选项卡时,它会自动隐藏。

默认情况下,此属性为 false。

访问函数

布尔值tabBarAutoHide() const
voidsetTabBarAutoHide(bool enabled)

另请参阅QWidget::visible.

tabPosition : TabPosition

该属性表示本选项卡窗口中选项卡的位置。

此属性的值由TabPosition枚举描述。

默认情况下,此属性设置为North

访问函数

QTabWidget::TabPositiontabPosition() const
voidsetTabPosition(QTabWidget::TabPosition position)

另请参阅TabPosition.

tabShape : TabShape

该属性表示本选项卡窗口中选项卡的形状。

此属性的值可以是QTabWidget::Rounded(默认)或QTabWidget::Triangular

访问函数

QTabWidget::TabShapetabShape() const
voidsetTabShape(QTabWidget::TabShape s)

另请参阅TabShape.

tabsClosable : bool

该属性表示是否为每个选项卡自动添加关闭按钮。

访问函数

布尔值tabsClosable() const
voidsetTabsClosable(bool closeable)

另请参阅QTabBar::tabsClosable.

usesScrollButtons : bool

该属性表示选项卡栏是否应该使用按钮在有许多选项卡时滚动选项卡。

当选项卡栏中的选项卡太多以至于无法适应其大小时,选项卡栏可以选择增大其大小或者添加用于在选项卡之间滚动的按钮。

默认情况下,该值取决于样式。

访问函数

布尔值usesScrollButtons() const
voidsetUsesScrollButtons(bool useButtons)

另请参阅elideModeQTabBar::usesScrollButtonsQStyle::SH_TabBar_PreferNoArrows.

成员函数文档

[显式] QTabWidget::QTabWidget(QWidget *parent = nullptr)

parent作为父级构建一个选项卡窗口。

[虚拟 noexcept] QTabWidget::~QTabWidget()

销毁选项卡窗口。

int QTabWidget::addTab(QWidget *page, const QString &label)

将带有指定 pagelabel 的标签添加到标签窗口,并返回标签在标签栏中的索引。将 page 的所有权传递给 QTabWidget

如果标签的 label 包含一个和号(&),则和号后面的字母被用作标签的快捷键,例如,如果标签是 "Bro&wse",则 Alt+W 成为快捷键,这将移动焦点到该标签。

注意:如果您在 show() 后调用 addTab(),则布局系统将尝试调整其小部件层次结构的变化,可能会引起闪烁。为了防止这种情况,您可以在更改之前将 QWidget::updatesEnabled 属性设置为 false;记住,更改完成后,将属性设置回 true,以便小部件再次接收绘制事件。

另见:insertTab()。

int QTabWidget::addTab(QWidget *page, const QIcon &icon, const QString &label)

这是一个重载函数。

将指定 pageiconlabel 的标签添加到标签窗口,并返回标签在标签栏中的索引。将 page 的所有权传递给 QTabWidget

此函数与 addTab() 相同,但具有额外的 icon

[覆盖虚拟受保护] 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

[信号] void QTabWidget::currentChanged(int index)

每当当前页面索引更改时都会发出此信号。参数是新当前页面 index 位置,或者如果没有新的(例如,如果没有小部件在 QTabWidget 中),则为 -1

注意:属性 currentIndex 的通知信号。

另见:currentWidget() 和 currentIndex

QWidget *QTabWidget::currentWidget() const

返回由标签对话框当前显示的页面指针。标签对话框会尽力确保该值永远不会是0(但如果足够努力,它可以是)。

另请参阅 currentIndex() 和 setCurrentWidget().

[覆盖虚拟保护] bool QTabWidget::event(QEvent *ev)

重实现了: QWidget::event(QEvent *event).

[覆盖虚拟] bool QTabWidget::hasHeightForWidth() const

重实现了: QWidget::hasHeightForWidth() const.

[覆盖虚拟] int QTabWidget::heightForWidth(int width) const

重实现了: QWidget::heightForWidth(int w) const.

int QTabWidget::indexOf(const QWidget *w) const

返回由小部件 w 占用的页面的索引位置,如果找不到该小部件,返回-1。

[虚拟保护] void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const

使用此 QTabWidget 的值初始化 option。此方法对于子类很有用,当它们需要 QStyleOptionTabWidgetFrame,但又不想自己填写所有信息时。

另请参阅 QStyleOption::initFrom() 和 QTabBar::initStyleOption().

int QTabWidget::insertTab(int index, QWidget *page, const QString &label)

在指定的 index 处的标签视图中插入带有给定 labelpage 的标签,并返回插入到标签栏中的标签的索引。将 page 的所有权传递给 QTabWidget

标签中的标签会显示出来,其外观可能因标签视图的配置而异。

如果标签的 label 包含一个和号(&),则和号后面的字母被用作标签的快捷键,例如,如果标签是 "Bro&wse",则 Alt+W 成为快捷键,这将移动焦点到该标签。

如果 index 超出范围,则标签会被简单追加。否则,它会被插入到指定的位置。

如果在调用此函数之前 QTabWidget 是空的,则新页面成为当前页面。在小于或等于当前索引的位置插入新标签将增加当前索引,但保持当前页面。

注意: 如果在调用 show() 后调用 insertTab(),布局系统将尝试调整其小部件层次结构中的更改,可能会导致闪烁。为了防止这种情况,您可以在更改之前将 QWidget::updatesEnabled 属性设置为 false;记得在更改完成后将该属性设置为 true,以便小部件再次接收绘图事件。

另请参阅 addTab().

int QTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)

这是一个重载函数。

将带有指定 labelpageicon 的标签插入到指定 index 处的标签控件中,并返回插入标签在标签栏中的索引。将 page 的所有权传递给 QTabWidget

此函数与 insertTab() 相同,但还包含额外的 icon

bool QTabWidget::isTabEnabled(int index) const

如果位置为 index 的页面被启用,则返回 true;否则返回 false

另见 setTabEnabled() 和 QWidget::isEnabled

bool QTabWidget::isTabVisible(int index) const

如果位置为 index 的页面是可见的,则返回 true;否则返回 false。

另见 setTabVisible

[覆盖虚保护] void QTabWidget::keyPressEvent(QKeyEvent *e)

重写:QWidget::keyPressEvent(QKeyEvent *event).

[覆盖虚] QSize QTabWidget::minimumSizeHint() const

重写属性访问函数:QWidget::minimumSizeHint

返回适合标签控件的合适最小尺寸。

[覆盖虚保护] void QTabWidget::paintEvent(QPaintEvent *event)

重写:QWidget::paintEvent(QPaintEvent *event).

在响应绘制 event 时绘制标签控件的标签栏。

void QTabWidget::removeTab(int index)

从该堆栈中移除位置为 index 的标签。页面控件本身不会被删除。

另见 addTab() 和 insertTab

[覆盖虚保护] 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)后单独将小部件重置父。

注意:角落小部件是为NorthSouth标签位置设计的;其他方向已知无法正常工作。

另请参阅cornerWidget()和setTabPosition

[slot] void QTabWidget::setCurrentWidget(QWidget *widget)

使widget成为当前小部件。使用的widget必须是此标签小部件中的页面。

另请参阅addTab()、setCurrentIndex()和currentWidget

[受保护的] void QTabWidget::setTabBar(QTabBar *tb)

用标签栏tb替换对话框的QTabBar标题。请注意,这必须在添加任何标签之前调用,否则行为是未定义的。

另请参阅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的标签设置icon

另请参阅tabIcon

void QTabWidget::setTabText(int index, const QString &label)

为位置为index的页面的标签定义一个新label

如果提供的文本包含一个和字符('&'),将自动为其创建一个快捷方式。紧随'&'之后的字符将用作快捷键。任何以前的快捷方式都将被覆盖,或者如果没有定义文本中的快捷方式,将清除。

另请参阅tabText

void QTabWidget::setTabToolTip(int index, const QString &tip)

将位置为index的页面的标签工具提示设置为tip

另请参阅tabToolTip

void QTabWidget::setTabVisible(int index, bool visible)

如果 visible 为真,则在 index 位置的页面是可见的;否则,在 index 位置的页面是隐藏的。页面的选项卡将相应地重新绘制。

另请参阅isTabVisible()。

void QTabWidget::setTabWhatsThis(int index, const QString &text)

index 位置的页面的帮助文本设置为 text

另请参阅tabWhatsThis()。

[覆盖虚拟受保护] void QTabWidget::showEvent(QShowEvent *)

重新实现: QWidget::showEvent(QShowEvent *event)。

[覆盖虚拟] QSize QTabWidget::sizeHint() const

重新实现属性访问函数: QWidget::sizeHint

QTabBar *QTabWidget::tabBar() const

返回当前的 QTabBar

另请参阅setTabBar()。

[信号] void QTabWidget::tabBarClicked(int index)

当用户在 index 位置的选项卡上单击时,发出此信号。

index 指的是被单击的选项卡,或者如果光标下没有选项卡,则为 -1。

[信号] void QTabWidget::tabBarDoubleClicked(int index)

当用户在 index 位置的选项卡上双击时,发出此信号。

index 是被单击的选项卡的索引,或者如果光标下没有选项卡,则为 -1。

[信号] void QTabWidget::tabCloseRequested(int index)

当在一个选项卡的关闭按钮上单击时,发出此信号。 index 是应该被移除的索引。

另请参阅setTabsClosable()。

QIcon QTabWidget::tabIcon(int index) const

返回 index 位置页面上的选项卡的图标。

另请参阅setTabIcon()。

[虚拟受保护] void QTabWidget::tabInserted(int index)

在向 index 位置添加或插入新选项卡后,调用此虚拟处理程序。

另请参阅tabRemoved()。

[虚拟受保护] 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 的页面的“这是什么”帮助文本,如果没有设置帮助文本,则返回空字符串。

另请参阅 setTabWhatsThis()。

QWidget *QTabWidget::widget(int index) const

返回位置位于 index 的标签页面,如果 index 超出范围,则返回 nullptr

© 2024 Qt 公司有限公司。本文档中包含的贡献的文档版权属于其各自的所有者。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证(版本 1.3) 条款进行许可。Qt 及其相关标志是芬兰和/或其他国家 Qt 公司的商标。所有其他商标都是各自所有者的财产。