QT之QTableWidget控件

QTableWidget是QT中的表格组件类。一般用来展示多行多列的数据,是QT中使用较多的控件之一。

1、QTableWidgetItem对象

QTableWidget中的每一个单元格都是一个QTableWidgetItem对象,因此先介绍下QTableWidgetItem的常用方法。

1.1、设置文本内容

void QTableWidgetItem::setText(const QString &text)

1.2、设置对齐方式

void QTableWidgetItem::setTextAlignment(int alignment)

1.3、设置单元格背景色

void QTableWidgetItem::setBackground(const QBrush &brush)

1.4、设置单元格显示图标

void QTableWidgetItem::setIcon(const QIcon &icon)

1.5、设置单元格字体

void QTableWidgetItem::setFont(const QFont &font)

1.6、获取单元格文本内容

QString QTableWidgetItem::text() const

2、设置QTableWidget的表头

    //设置列数
    ui->tableWidget->setColumnCount(3);

    QTableWidgetItem *item0 = new QTableWidgetItem;
    QTableWidgetItem *item1 = new QTableWidgetItem;
    QTableWidgetItem *item2 = new QTableWidgetItem;

    //设置显示内容
    item0->setText("姓名");
    item1->setText("年龄");
    item2->setText("学号");

    //设置水平表头
    ui->tableWidget->setHorizontalHeaderItem(0, item0);
    ui->tableWidget->setHorizontalHeaderItem(1, item1);
    ui->tableWidget->setHorizontalHeaderItem(2, item2);

效果

 3、初始化数据

    //初始化数据
    //添加数据时,一定要设置行数,否则数据不会展示出来
    ui->tableWidget->setRowCount(2);

    QTableWidgetItem* name0 = new QTableWidgetItem;
    QTableWidgetItem* name1 = new QTableWidgetItem;
    QTableWidgetItem* age0 = new QTableWidgetItem;
    QTableWidgetItem* age1 = new QTableWidgetItem;
    QTableWidgetItem* code0 = new QTableWidgetItem;
    QTableWidgetItem* code1 = new QTableWidgetItem;

    name0->setText("张三");
    name1->setText("李四");

    age0->setText("28");
    age1->setText("26");

    code0->setText("1000");
    code1->setText("1001");

    //为指定的某行或某列设置item
    ui->tableWidget->setItem(0, 0, name0);
    ui->tableWidget->setItem(1, 0, name1);

    ui->tableWidget->setItem(0, 1, age0);
    ui->tableWidget->setItem(1, 1, age1);

    ui->tableWidget->setItem(0, 2, code0);
    ui->tableWidget->setItem(1, 2, code1);

效果

 4、插入数据

    //在末尾插入数据
    int curRow = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(curRow);


    QTableWidgetItem* name2 = new QTableWidgetItem;
    QTableWidgetItem* age2 = new QTableWidgetItem;
    QTableWidgetItem* code2 = new QTableWidgetItem;

    name2->setText("王五");
    age2->setText("19");
    code2->setText("1002");


    ui->tableWidget->setItem(curRow, 0, name2);
    ui->tableWidget->setItem(curRow, 1, age2);
    ui->tableWidget->setItem(curRow, 2, code2);

效果

 5、遍历数据

    //遍历数据
    QTableWidgetItem* item;
    QString str;

    for(int i = 0; i < ui->tableWidget->rowCount(); i++){
        for(int j = 0; j < ui->tableWidget->columnCount(); j++){
            item = ui->tableWidget->item(i, j);
            str = str + item->text() + " ";
        }
    }

    qDebug()<<"str = "<<str;

效果

 6、常用信号

单元格发生切换时,发射两个信号

//currentRow, currentColumn   当前点击的单元格
//previousRow, previousColumn  先前具有焦点的单元格
void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)

//current 当前点击的单元格
//previous 先前具有焦点的单元格
void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

7、删除选中行

    int curRow = ui->tableWidget->currentRow();
    ui->tableWidget->removeRow(curRow);

8、表头的设置

8.1、设置每一行最后一个单元格不留空格

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);

直接看下效果

8.2、设置自适应大小

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

效果

8.3、设置等宽

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

效果

9、其他常用设置

9.1、获取行数和列数

int QTableWidget::rowCount() const

int QTableWidget::columnCount() const

9.2、获取当前单元格的行号和列号

int QTableWidget::currentRow() const

int QTableWidget::currentColumn() const

9.3、设置单元格内容是否可编辑

void setEditTriggers(EditTriggers triggers)
 

9.4、设置选择方式是单元格选择还是行选择

void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

QAbstractItemView::SelectItems      //单元格选择模式

QAbstractItemView::SelectRows      //行选择模式

QAbstractItemView::SelectColumns //列选择模式

Qt手册的使用

上面介绍是QTableWidget较常用的一些方法,使用这些方法进行基本的数据展示和读取完全够用了,如果你要用到其他一些功能,可自行去查阅qt手册。

安装qt后,我们在运行框输入Assistant,然后打开。

 我们在这里输入想要查询的控件名,就右侧就会查询到该控件提供的所有方法。

下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。
一、项目概述 本项目设计并实现了一个基于STM32F103C8T6微控制器的温湿度监测与报警系统。系统通过DHT11传感器实时采集环境温湿度数据,当数据超过预设阈值时,蜂鸣器发出声音报警,同时通过4位数码管实时显示当前温湿度值。整个系统采用Type-C接口供电,支持USB串口通信,便于数据调试与传输。 二、硬件组成 1. 主控模块:STM32F103C8T6最小系统(含晶振、复位、BOOT电路、去耦电容)。 2. 传感器模块:DHT11温湿度传感器(单总线通信)。 3. 报警模块:有源蜂鸣器(三极管驱动)。 4. 显示模块:4位共阴数码管(TM1637驱动)。 5. 通信模块:CH340N USB转串口芯片(Type-C接口)。 6. 电源模块:AMS1117-3.3稳压电路(5V转3.3V)。 7. 调试接口:SWD调试排针(SWDIO/SWCLK)。 三、开发流程 1. 原理图设计:使用嘉立创EDA绘制完整原理图,包含各功能模块。 2. PCB设计:进行PCB布局布线,注重电源完整性、信号隔离及晶振走线。 3. 制板焊接:嘉立创打样,手工焊接元器件。 4. 软件开发:STM32CubeMX配置工程,编写DHT11驱动、TM1637显示、串口通信及报警逻辑。 5. 调试测试:通过SWD下载程序,串口输出数据,测试温湿度采集与报警功能。 四、项目特点 - 完整的嵌入式系统开发流程(硬件设计→制板→软件编程→调试)。 - 多传感器数据融合与实时显示。 - 低功耗设计,支持USB供电与串口通信。 - 模块化设计,便于功能扩展(如添加WiFi模块、数据存储等)。 五、应用前景 适用于家庭环境监测、农业大棚、仓库温湿度监控等场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大草原的小灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值