QTabWidget各种常见的基本用法

在 Qt 中,QTabWidget 是一个常用的控件,用于在一个窗口或对话框中创建多个选项卡。每个选项卡可以包含不同的内容,用户可以通过点击选项卡来切换显示不同的内容。

接下来让我们看看QTabWidget的具体用法:

一.创建QTabWidget对象

创建项目的时候,要包含头文件#include <QTabWidget>,然后创建该控件对象。

QTabWidget* pTabWidget = new QTabWidget(this);

二.往QTabWidget中添加选项卡

QHBoxLayout* Lay = new QHBoxLayout(this);
    QWidget* w1 = new QWidget;
    w1->setStyleSheet("background-color:rgb(45,45,45)");

    QWidget* w2 = new QWidget;
    w2->setStyleSheet("background-color:rgb(45,145,145)");

    QWidget* w3 = new QWidget;
    w3->setStyleSheet("background-color:rgb(225,225,0)");

    //将几个QWidget添加到QTabWidget当中去
    pTabWidget->insertTab(0,w1,"tab1");
    pTabWidget->insertTab(1,w2,"tab2");
    pTabWidget->insertTab(2,w3,"tab3");

    Lay->addWidget(pTabWidget);

这里设置了三个选项卡。运行后得效果如下图所示。

注意要写布局,并且要将QTabWidget对象添加到该布局当中去。否者选项卡就不能够正确的的显示。另外还要介绍的是QTabWidget中的insertTab函数。

//--------------------------------------------insertTab函数-----------------------------------------------------------------

QTabWidget::insertTab() 函数是用于在 QTabWidget 中插入一个新的标签页的方法。这个函数有多个重载版本,但是最常用的版本通常包含以下参数:

  • index:要插入标签页的位置索引。如果索引为 -1,则表示在最后插入一个新标签页。
  • widget:要插入的 QWidget 对象,作为新标签页的内容。
  • icon:可选参数,表示要显示在标签页标签上的图标。
  • label:标签页的显示文本。

这个函数允许你动态地向 QTabWidget 中添加标签页,并指定标签页的内容、图标和显示文本。它是使用标签页的一种常见方式,通常与 addTab() 函数一起使用,但与 addTab() 不同的是,insertTab() 允许你在指定的位置插入标签页,而不是将其添加到末尾。

下面是示例代码:

QTabWidget* tabWidget = new QTabWidget(this);

QHBoxLayout *layout = new QHBoxLayout(this);
// 创建标签页的内容
QWidget* page1 = new QWidget;
QWidget* page2 = new QWidget;

// 向标签页中插入内容
tabWidget->insertTab(0, page1, QIcon(":/images/icon1.png"), "Page 1");
tabWidget->insertTab(1, page2, QIcon(":/images/icon2.png"), "Page 2");

// 将标签页添加到布局中
layout->addWidget(tabWidget);

//-----------------------------------------------------------------------------------------------------------------------------

三. QTabWidget中涉及到的一些信号

  1. currentChanged(int index) 当前选中的选项卡发生改变时触发。参数 index 表示当前选中的选项卡的索引。

  2. tabBarClicked(int index) 当用户点击选项卡栏上的任意选项卡时触发。参数 index 表示被点击的选项卡的索引。

  3. tabCloseRequested(int index) 当用户尝试关闭一个选项卡时触发。参数 index 表示将要关闭的选项卡的索引。

  4. tabBarDoubleClicked(int index): 当用户双击选项卡栏上的任意选项卡时触发。

  5. currentIndexChanged(int index): 当前选中的选项卡索引发生变化时触发,无论是由用户操作还是程序调用导致的变化。

这些信号可以让你在应用程序中响应用户的操作,比如根据选项卡的切换更新界面内容,处理选项卡的关闭操作等。

大家可以写一些测试函数,来测试这些信号的可用性。

connect(pTabWidget,&QTabWidget::currentChanged,this,&Widget::currentChanged);
void Widget:: currentChanged(int index){

    qDebug()<<"currentChanged index ="<<index;

}

这是其中的一个信号。可以在切换选项卡面的时候输出当前选项卡面的索引。如下图:

从第一张切换到了第二张,第二张所在索引在1,输出是1。

四.关闭单个的标签页

QTabWidget* pTabWidget = new QTabWidget(this);
pTabWidget->setTabsClosable(true);

效果如下图所示:

通过调用 setTabsClosable(true) 方法,你可以启用关闭按钮,并允许用户关闭标签页,这里具体功能还没有实现,要实现的话得使用信号与槽函数。

这里我们就将标签页1关闭了。

 connect(pTabWidget,&QTabWidget::tabCloseRequested,this,&Widget::removeTab1);

点击标签页的❌号会触发QTabWidget里的tabCloseRequested信号,这个信号会传递点击的标签页的索引,我们编写槽函数使用removeTab(index)函数将标签页关闭就好。

五.实现标签页的移动

使用的函数为:

 pTabWidget->setMovable(true);

实现的效果是: 

六.标签的位置的改变

使用的函数为:

 pTabWidget->setTabPosition(QTabWidget::West);

方位一共有4个: 

  enum TabPosition { North, South, West, East };

 实现的效果是: 

七.标签的形状的改变

使用的函数为:

pTabWidget->setTabShape(QTabWidget::Triangular);

形状一共有4个: 

enum TabShape { Rounded, Triangular }

实现的效果是: 

  • 32
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值