Qt之容器控件(QTabWidget)

简述

QTabWidget类提供了选项卡式的窗口控件。

功能详述

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

使用QTabWidget的正常方法是执行以下操作:

  1. 创建一个QTabWidget。
  2. 为每一个标签页创建一个QWidget作为页控件,但不要为它们指定父类。
  3. 向页控件中插入子控件,使用使用布局工具来对它们进行布局。
  4. 调用addTab()或者insertTab()将页控件插入标签控件,并为每一个标签分配一个标签字符串,快捷键可加可不加。

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::North0标签显示在页面上方
QTabWidget::South1标签显示在页面下方
QTabWidget::West2标签显示在页面左边
QTabWidget::East3标签显示在页面右边

效果

设置标签形状

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助手

  • 46
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值