QTabWidget类提供了选项卡式的窗口控件。
选项卡小部件提供了一个选项卡栏(请参阅QTabBar)和一个“页面区域”,该页面区域用于显示与每个选项卡相关的页面。默认情况下,选项卡栏显示在页面区域上方,但是可以使用不同的配置(请参见TabPosition)。每个选项卡都与一个不同的窗口小部件(称为页面)相关联。页面区域中仅显示当前页面。其他所有页面均被隐藏。用户可以通过单击其选项卡或按Alt +字母快捷键(如果有的话)来显示其他页面。
使用QTabWidget的正常方法是执行以下操作:
tabPosition和tabShape分别用于定义标签的位置和形状。
当用户选择一个页面的时候,currentChanged信号会被发出
currentIndex()和currentWidget()分别用于获取当前页面的页号和当前页控件。可以通过widget()获取当前页面控件的指针。setCurrentWidget或者setCurrentIndex可以用来展示特定的页面。
使用setTabText和setTabIcon来改变标签文本和icon。使用removeTab来移除标签页。
使用setTabEnabled来使能或者失能特定的标签页。
在分离复杂对话框上,QTabWidget是一个非常好的选择。另一个可替代的选择是在QStackedWidget加上页面导航功能,例如QToolBar或者QListWidget。
QTabWidget的大多数功能由一个QTabBar和一个QStackedWidget提供。
上图是Qt creator中某个页面的效果。可以作为设计参考。
这是一个带有三个空页面的标签控件示例,用于展示QTabWidget的基本用法。
QTabWidget *tabWidget = new QTabWidget;
tabWidget->setTabShape(QTabWidget::Triangular);
tabWidget->setTabPosition(QTabWidget::West);
QWidget *pageWidget_0 = new QWidget;
QWidget *pageWidget_1 = new QWidget;
QWidget *pageWidget_2 = new QWidget;
tabWidget->addTab(pageWidget_0, "第一页");
tabWidget->addTab(pageWidget_1, "第二页");
tabWidget->addTab(pageWidget_2, "第三页");
QGridLayout *gridLayout = new QGridLayout;
gridLayout->addWidget(tabWidget);
this->setLayout(gridLayout);
this->resize(500, 300);
使用addTab和insertTab来添加控件,有两个版本,一个带图例,一个不带,如下所示。
tabWidget->addTab(pageWidget_0, "第一页");
tabWidget->addTab(pageWidget_0, QICon(":/picture/qq.png"), "第一页");
tabWidget->insertTab(1, pageWidget_0, "第一页");
tabWidget->insertTab(1, pageWidget_0, QICon(":/picture/qq.png"), "第一页");
用removeTab来移除控件
tabWidget->removeTab(1);
tabWidget->setMovable(true);
效果
当标签控件的标签小于2的时候,标签会被隐藏。
tabWidget->setTabBarAutoHide(true);
效果
tabWidget->setTabPosition(QTabWidget::North)
枚举:QTabWidget::TabPosition
常量 | 值 | 描述 |
---|---|---|
QTabWidget::North | 0 | 标签显示在页面上方 |
QTabWidget::South | 1 | 标签显示在页面下方 |
QTabWidget::West | 2 | 标签显示在页面左边 |
QTabWidget::East | 3 | 标签显示在页面右边 |
效果
tabWidget->setTabShape(QTabWidget::Triangular);
效果
tabWidget->setClosable(true);
tabWidget->setUsersScrollButtons(true);
效果
名称 | 描述 |
---|---|
setCurrentIndex(int index) | 设置索引为index的控件为当前控件 |
setCurrentWidget(QWidget *widget) | 设置控件widget为当前控件 |
名称 | 描述 |
---|---|
currentChanged(int index) | 当前标签改变,index为改变后的标签索引 |
tabBarClicked(int index) | 标签被点击,index为被点击标签的索引 |
tabBarDoubleClicked(int index) | 标签被双击,index为被双击标签的索引 |
tabCloseRequested(int index) | 标签关闭按钮被点击,index为被点击标签的索引 |
[1] Qt助手