QTabWidget类
QTabWidget类提供一组标签控件。 更多信息...
头文件 | #include <QTabWidget> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QWidget |
公共类型
枚举 | TabPosition { North, South, West, East } |
枚举 | TabShape { Rounded, Triangular } |
属性
|
|
公共函数
QTabWidget(QWidget *parent = nullptr) | |
虚拟 | ~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 |
布尔值 | 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) |
布尔值 | isMovable() const |
布尔值 | isTabEnabled(int index) const |
布尔值 | 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 |
布尔值 | 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 |
布尔值 | tabsClosable() const |
布尔值 | usesScrollButtons() const |
QWidget * | widget(int index) const |
重写的公共函数
虚函数 | hasHeightForWidth() const 覆盖 |
虚函数 | heightForWidth(int width) const 覆盖 |
虚函数 | minimumSizeHint() const 覆盖 |
虚函数 | sizeHint() const 覆盖 |
公共槽
void | setCurrentIndex(int index) |
void | setCurrentWidget(QWidget *widget) |
信号
void | currentChanged(int index) |
void | tabBarClicked(int index) |
void | tabBarDoubleClicked(int index) |
void | tabCloseRequested(int index) |
受保护的函数
虚函数 | initStyleOption(QStyleOptionTabWidgetFrame *option) const |
void | setTabBar(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 的正常方法如下
- 创建一个 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 上的文档模式相同。
设置此属性时,不渲染标签小部件框架。此模式适用于显示页面覆盖标签小部件大部分区域的文档类型页面。
访问函数
布尔值 | 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
;
访问函数
布尔值 | isMovable() const |
void | setMovable(bool movable) |
tabBarAutoHide : bool
如果为真,当选项卡栏包含少于2个选项卡时,它会自动隐藏。
默认情况下,此属性为 false。
访问函数
布尔值 | 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
该属性表示是否为每个选项卡自动添加关闭按钮。
访问函数
布尔值 | tabsClosable() const |
void | setTabsClosable(bool closeable) |
usesScrollButtons : bool
该属性表示选项卡栏是否应该使用按钮在有许多选项卡时滚动选项卡。
当选项卡栏中的选项卡太多以至于无法适应其大小时,选项卡栏可以选择增大其大小或者添加用于在选项卡之间滚动的按钮。
默认情况下,该值取决于样式。
访问函数
布尔值 | usesScrollButtons() const |
void | setUsesScrollButtons(bool useButtons) |
另请参阅elideMode、QTabBar::usesScrollButtons和QStyle::SH_TabBar_PreferNoArrows.
成员函数文档
[显式]
QTabWidget::QTabWidget(QWidget *parent = nullptr)
以parent作为父级构建一个选项卡窗口。
[虚拟 noexcept]
QTabWidget::~QTabWidget()
销毁选项卡窗口。
int QTabWidget::addTab(QWidget *page, const QString &label)
将带有指定 page 和 label 的标签添加到标签窗口,并返回标签在标签栏中的索引。将 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)
这是一个重载函数。
将指定 page、icon 和 label 的标签添加到标签窗口,并返回标签在标签栏中的索引。将 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 处的标签视图中插入带有给定 label 和 page 的标签,并返回插入到标签栏中的标签的索引。将 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)
这是一个重载函数。
将带有指定 label、page 和 icon 的标签插入到指定 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 的标签。页面控件本身不会被删除。
[覆盖虚保护]
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
)后单独将小部件重置父。
注意:角落小部件是为North和South标签位置设计的;其他方向已知无法正常工作。
另请参阅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 公司的商标。所有其他商标都是各自所有者的财产。