当前位置: 首页 > article >正文

[Qt]常用控件介绍-容器类控件-QGroupBox、QTabWidget

目录

1.容器类控件介绍

2.GroupBox控件

核心属性

3.QTableWidget

核心属性

核心信号

细节

使用案例


1.容器类控件介绍

        容器类控件指的是一个控件里面包含了多个我们之间学过的那种对象,而多元素控件则是,一个控件中是由多个Item对象构成的。对于容器类控件内部的控件,这些内部的控件的父元素就不在是this了,而是这些容器类控件了。

2.GroupBox控件

        该控件是一个带有标题的分组框。这个控件只是为了让界面看起来好看一些,当一个界面比较复杂的时候,会包含很多个控件,分组框就可以把具有关联关系的控件,组织在一起。

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

是否可以选中

为true的时候,title前面会多一个可勾选的部分

checked

描述分组框的选中状态,但前提是checkable为true

如果说设置该状态后,如果不选中的话,内部控件不能进行操作

3.QTableWidget

        该控件是一个带有标签页的控件

核心属性
属性说明
tabPosition

标签页所在的方位

North上方,South下方,West左侧,East右侧

currentIndex当前选中了第几个标签页(从0开始计算)
currentTabText当前选中的标签页的文本
currentTabName当前选中的标签页的名字
currentTabIcon当前选中的标签页的图标
currentTabToolTip当前选中的标签页的提示信息
tabsCloseable标签页是否可以关闭
moveable标签页是否可以移动
核心信号
信号说明
currentChanged(int)在标签页发生切换时候触发,参数为选项卡的编号
tabBarCkicked(int)在点击选项卡标签页的时候触发
tabBarDoubleClicked(int)在双击选项卡标签页的时候触发
tabCloseRequest(int)在标签页关闭的时候触发
细节
  • 对于TabWidget内部的每一个标签页都是一个QWidget,所以我们如果在代码中添加标签页内部的控件的时候,需要将对象挂载到标签页的对象树上,每一个标签页也是有名字的,可以通过ui->xxxx访问的到。也是相当于指明了控件创建到那个标签页当中了。
  • addTab、removeTab分别是添加和删除标签页的函数,addTab的参数有两个,第一个是要传入的QWidget对象,第二个是标签页的名称,removeTab则简单,直接传入标签页的下标即可。
  • 对于新增标签页的时候,也不需要将标签页挂载到对象树上,也是该QTableWidget释放的时候,会调用析构函数,将所有标签页QWidget对象释放的。
  • 对于tableCloseable属性,如果为true的话,会在标签页名称的后面带有一个关闭按键,但这里并不是真正的关闭,而是会发出tabCloseRequest信号,具体怎么处理,需要我们自己去定义。
使用案例

        使用两个按钮来控制该控件的增加和删除标签页

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //初始化标签页
    QLabel *label1 = new QLabel(ui->tab);
    label1->setText("这是标签页1");
    label1->resize(200, 100);

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

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

//添加标签页
void Widget::on_pushButton_clicked()
{
    //获取标签页数量
    int count = ui->tabWidget->count();
    //创建标签页对象
    QWidget* tab = new QWidget();
    ui->tabWidget->addTab(tab, QString("Tab ") + QString::number(count + 1));
    //并选中这个新的标签页
    ui->tabWidget->setCurrentIndex(count);
}

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


http://www.kler.cn/a/506542.html

相关文章:

  • UDP报文格式
  • 02JavaWeb——JavaScript-Vue(项目实战)
  • Android SystemUI——车载CarSystemUI加载(八)
  • Linux第二课:LinuxC高级 学习记录day04
  • 【Kotlin】上手学习之类型篇
  • 09.VSCODE:安装 Git for Windows
  • Bootstrap UI 编辑器
  • vue3里面,事件触发一次,方法执行多次
  • 通过ssh连接debian
  • Redis :redis的大Key问题
  • 复盘思维课程
  • Spring MVC核心组件与请求处理流程
  • BertTokenizerFast 和 BertTokenizer 的区别
  • 探索 AI 自动化编程:效率革命与未来教育的转型
  • Java 对象池管理的高性能工具库 Apache Commons Pool 2
  • 2.两数相加--力扣
  • tomcat文件目录讲解
  • 剑指Offer|LCR 031. LRU 缓存
  • Haskell语言的网络编程
  • 基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件
  • 【k8s面试题2025】1、练气期
  • 鸿蒙-点击Notification通知并打开App的具体页面
  • 动态规划汇总1
  • 服务器数据恢复—Zfs文件系统数据恢复案例
  • mongDB学习笔记
  • 基于Linux系统指令使用详细解析