Qt_常用控件_Table Widget

1. 内容概述

控件常用操作简述,主要涵盖如下内容:

  1. 设置表格行数和列数
  2. 设置表格水平表头
  3. 设置单元格编辑状态
  4. 设置单元格内容
  5. 单元格编辑后触发cellChanged信号(单元格的值修改为不一样后才会触发)
  6. 单元格添加Combo Box部件

TableWidget控件效果图

2. 设置表格行数和列数

表格效果
在这里插入图片描述

代码实现

//设置表格行数
ui->tableWidget->setRowCount(4);
//设置表格列数
ui->tableWidget->setColumnCount(2);

3. 设置表格水平表头

表格效果
在这里插入图片描述
代码实现

//设置水平表头
QStringList strList;
strList <<tr("参数名")<< tr("参数值");
ui->tableWidget->setHorizontalHeaderLabels(strList);

4. 设置单元格编辑状态

代码实现

QTableWidgetItem *pItem = new QTableWidgetItem("MaxNum");
pItem->setFlags(Qt::ItemIsEnabled); //设置当前单元格编辑状态为浅色不可编辑,具体详见Qt帮助文档中的枚举体,陈列了各种编辑状态
ui->tableWidget->setItem(0,0,pItem);    

5. 设置单元格内容

5.1 单元格内容的基础设置操作

表格效果
在这里插入图片描述
代码实现

ui->tableWidget->setItem(0,0,new QTableWidgetItem(tr("MaxNum")));   //设置第0行第0列单元格内容
ui->tableWidget->setItem(0,1,new QTableWidgetItem(tr("10")));  		//设置第0行第1列单元格内容

5.2 单元格内容的实用设置操作

表格效果
在这里插入图片描述
代码实现

 	//数据准备
    QList<QString> strParamName;
    strParamName << tr("MaxNum") << tr("MinScore")<< tr("Circularity") << tr("abc");
    QList<QString> strParamValue;
    strParamValue << tr("10") << tr("60")<< tr("0.5") << tr("20");
    //循环设置4行2列所有单元格的内容
    for (int nRow = 0; nRow < 4; nRow++)
    {
        int nColumn = 0;
        //设置第1列内容,并且设置为不可编辑
        QTableWidgetItem *pItem = new QTableWidgetItem(strParamName.at(nRow));
        pItem->setFlags(Qt::ItemIsEnabled);              //设置编辑状态为浅色不可编辑
        ui->tableWidget->setItem(nRow,nColumn++,pItem);  //设置第1列内容
        //设置第2列内容
        ui->tableWidget->setItem(nRow,nColumn,new QTableWidgetItem(strParamValue.at(nRow)));
    }

6. 单元格编辑后触发cellChanged信号

注:当编辑的单元格的内容变化后,才会触发;如果内容一致,则不会触发。

 //编辑完成后触发cellChanged信号
 connect(ui->tableWidget,&QTableWidget::cellChanged,
            [=](int row,int column)
                {
                    qDebug() <<tr(" row = ") << row << tr(" column = ")<< column << ui->tableWidget->item(row,column)->text();
                });

7. 单元格添加QCombo Box部件

表格效果
在这里插入图片描述
代码实现

//添加部件Combo Box到单元格中
QComboBox *pComboBox = new QComboBox();
pComboBox->addItem("BlackOnWhite");
pComboBox->addItem("WhiteOnBlack");
ui->tableWidget->setCellWidget(0,1,pComboBox); //添加到底0行第1列单元格中

7.1 当comboBox下拉选择变化的时候触发currentIndexChanged(const QString &text)信号

 //绑定ComboBox值改变信号
    void (QComboBox::*p)(const QString &str) =&QComboBox::currentIndexChanged;
    connect(pComboBox,p,  [=](QString str)
    {
            qDebug() << "str = "<<str;
    });

8. 源码

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QComboBox>
#include <QDebug>


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

    //设置行数
    ui->tableWidget->setRowCount(4);
    //设置列数
    ui->tableWidget->setColumnCount(2);

    //设置水平表头
    QStringList strList;
    strList <<tr("参数名")<< tr("参数值");
    ui->tableWidget->setHorizontalHeaderLabels(strList);

    //设置内容
   // ui->tableWidget->setItem(0,0,new QTableWidgetItem(tr("MaxNum")));

    //数据准备
    QList<QString> strParamName;
    strParamName << tr("MaxNum") << tr("MinScore")<< tr("Circularity") << tr("abc");
    QList<QString> strParamValue;
    strParamValue << tr("10") << tr("60")<< tr("0.5") << tr("20");

    for (int nRow = 0; nRow < 4; nRow++)
    {
        int nColumn = 0;
        //设置第1列内容,并且设置为不可编辑
        QTableWidgetItem *pItem = new QTableWidgetItem(strParamName.at(nRow));
        pItem->setFlags(Qt::ItemIsEnabled);              //设置编辑状态为浅色不可编辑
        ui->tableWidget->setItem(nRow,nColumn++,pItem);
        //设置第2列内容
        ui->tableWidget->setItem(nRow,nColumn,new QTableWidgetItem(strParamValue.at(nRow)));
    }
    
    //编辑完成后触发cellChanged信号
    connect(ui->tableWidget,&QTableWidget::cellChanged,[=](int row,int column)
                {
                    qDebug() <<tr(" row = ") << row << tr(" column = ")<< column << ui->tableWidget->item(row,column)->text();
                });

    //添加部件Combo Box到cell中
    QComboBox *pComboBox = new QComboBox();
    pComboBox->addItem("BlackOnWhite");
    pComboBox->addItem("WhiteOnBlack");
    ui->tableWidget->setCellWidget(0,1,pComboBox);

    //绑定ComboBox值改变信号
    void (QComboBox::*p)(const QString &str) =&QComboBox::currentIndexChanged;
    connect(pComboBox,p,
            [=](QString str)
    {
            qDebug() << "str = "<<str;
    });
}

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

  • 19
    点赞
  • 170
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值