【Qt】容器类控件TabWidget

 容器类控件TabWidget

使用TabWidget实现一个带有标签页的控件,可以在里面添加一些widget,通过标签页来进行切换。

  • 核心属性
属性说明

tabPosition

标签⻚所在的位置.

  • North 上⽅
  • South 下⽅
  • West 左侧
  • East 右侧

currentIndex

当前选中了第⼏个标签⻚ (从 0 开始计算)

currentTabText

当前选中的标签⻚的⽂本

currentTabName

当前选中的标签⻚的名字

currentTabIcon

当前选中的标签⻚的图标

currentTabToolTip

当前选中的标签⻚的提⽰信息

tabsCloseable

标签⻚是否可以关闭

movable

标签⻚是否可以移动

  • 核心信号
信号说明

currentChanged(int)

在标签⻚发⽣切换时触发, 参数为被点击的选项卡编号

tabBarClicked(int)

在点击选项卡的标签条的时候触发. 参数为被点击的选项卡编号

tabBarDoubleClicked(int)

在双击选项卡的标签条的时候触发. 参数为被点击的选项卡编号

tabCloseRequest(int)

在标签⻚关闭时触发. 参数为被关闭的选项卡编号.

例子:使用标签页管理多组控件

创建一个程序,带有一个TabWidget作为标签页;

提供俩个按钮,分别用于创建新的标签页,关闭当前选中的标签页;

当切换标签页的时候,也能感知到变化。

(1)设置一个QTabWidget标签页,俩个按钮

(2)在俩个标签页中使用代码初始化俩个label

注意新创建的 label 的⽗元素, 是 ui->tab 和 ui->tab_2 . Qt 中使⽤⽗⼦关系决定该控件 "在

哪⾥".

(3)编写按钮的slot函数

  • 使⽤ count() 获取到标签⻚的个数.
  • 使⽤ addTab 新增标签⻚.
  • 使⽤ removeTab 删除标签⻚.
  • 使⽤ currentIndex 获取到当前标签⻚的下标.
  • 使⽤ setCurrentIndex 切换当前标签⻚.

(4)编写 QTabWidget 的 currentChanged 函数

(5)执行程序

(6)代码展示

#include "widget.h"
#include "ui_widget.h"

#include<QLabel>
#include<QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 创建俩个label
    QLabel* label1 = new QLabel(ui->tab);
    label1->setText("标签页 1");
    label1->resize(100, 50);

    QLabel* label2 = new QLabel(ui->tab_2);
    label2->setText("标签页 2");
    label2->resize(100, 50);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    // 获取当前存在标签页的个数
    int count = ui->tabWidget->count();
    // 创建新的widget
    QWidget* widget = new QWidget;
    // 设置新的标签页
    ui->tabWidget->addTab(widget, QString("tab") + QString::number(count + 1));

    // 在标签页中设置新的label
    QLabel* label = new QLabel(widget);
    label->setText(QString("标签页 ") + QString::number(count + 1));
    label->resize(100, 50);

    // 选中当前设置的标签页
    ui->tabWidget->setCurrentIndex(count);
}

void Widget::on_pushButton_2_clicked()
{
    // 获取选中的当前页的下标
    int index = ui->tabWidget->currentIndex();
    // 删除选中页
    ui->tabWidget->removeTab(index);
}

void Widget::on_tabWidget_currentChanged(int index)
{
    qDebug() << "当前的标签页为 " << index;
}
  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值