【Qt】容器类控件

目录

QGroupBox 分组框

QTabWidget 标签页


QGroupBox 分组框

QGroupBox类用于组织用户界面的相关控件,以便更清晰地显示逻辑结构或功能分组,并提供一个可选的标题。分组框主要是用于规整和美化界面,不涉及用户交互和业务逻辑

可以通过样式表(CSS)或者直接的属性设置,定制QGroupBox的外观,例如设置边框、背景色等。也可以嵌套使用多个QGroupBox,以创建更复杂的布局结构,帮助用户更好地理解和操作相关控件


核心属性

属性说明
title分组框的标题
alignment分组框内部内容的对齐方式
flat是否是“扁平”模式
checkable

是否可选择

设为true,在title前会多出一个可勾选框

checked

当checkable为true时,该属性才有意义

描述分组框的选择状态

true代表选中,可以使用其中的控件,反之则不能


示例:点餐小程序。使用QGroupBox组织控件,包括QComboBox和QSpinBox

直接使用Qt Designer实现即可

设置主食的分组框 flat = true,效果如下,感觉主食的分组框还想嵌在界面中

设置主食的分组框 checkable = true,check = true;小食的分组框 checkable = true,check = false


QTabWidget 标签页

QTabWidget类用于实现选项卡式界面,允许用户在单个窗口内切换显示不同的页面或标签页,也可以往其中添加一些控件,每个标签页都包含相关的内容和功能


核心属性

属性说明
tabPosition

标签页所在的位置

  • North:标签显示在左上方
  • South:标签显示在左下方
  • West:标签显示在左侧
  • East:标签显示在右侧
currentIndex当前选中第几个标签页,从0开始计算
currentTabText当前选中的标签页的文本
currentTabName

当前选中的标签页的名字,用于代码编程使用

currentTabIcon当前选中的标签页的图标
currentTabToolTip当前选中的标签页的提示信息
tabsClosable

标签页是否可以关闭

设置为true后,选项卡旁会出现关闭按钮

movable标签页是否可以移动

其中,每个标签页都是一个QWidget

核心信号

属性说明
currentChanged(int)当标签页发生切换时触发,参数是切换后,当前标签页的编号
tabBarClicked(int)当点击选项卡的标签页时触发,参数是被点击的选项卡编号
tabBarDoubleClicked(int)当双击选项卡的标签页时触发,参数是被点击的选项卡编号
tabCloseRequest(int)

当设置tabsCloseable = true时,选项卡旁会出现关闭按钮

点击关闭按钮触发该信号,参数是要关闭的选项卡编号


代码示例:使用标签页管理多组控件,有两个按钮,一个新增标签页,一个删除当前选中标签页。通过信号与槽机制实现选项卡关闭按钮

1. 使用Qt Designer 添加所需控件

2. 编写widget.cpp,初始化相关控件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //因为标签页是QWidget,指定其为父节点,就会在其界面显示
    QLabel *label1 = new QLabel(ui->tab);
    label1->resize(200, 50);
    label1->setText("此时处于标签页1");
    QLabel *label2 = new QLabel(ui->tab_2);
    label2->resize(200, 50);
    label2->setText("此时处于标签页2");
}

3. 编写按钮点击信号的槽函数

//新增标签页
void Widget::on_pushButton_add_clicked()
{
    //创建新界面并添加一个label
    QWidget *widget = new QWidget();
    QLabel *label = new QLabel(widget);
    int count = ui->tabWidget->count();
    label->resize(200, 50);
    label->setText("此时处于标签页" + QString::number(count + 1));
    //添加到标签页中
    QString tabName = "Tab_" + QString::number(count + 1);
    ui->tabWidget->addTab(widget, tabName);
    //添加完后直接选中该标签页
    ui->tabWidget->setCurrentIndex(count);
}
//关闭当前选中标签页
void Widget::on_pushButton_delete_clicked()
{
    int index = ui->tabWidget->currentIndex();
    ui->tabWidget->removeTab(index);
}

4. 选项卡关闭按钮的槽函数

void Widget::on_tabWidget_tabCloseRequested(int index)
{
    ui->tabWidget->removeTab(index);
}

结束语

感谢你的阅读,如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值