【QT知识分享】QTableWidget用法详细介绍

1、功能使用

1.1、清空表格所有数据

ui->tableWidget->setRowCount(0);//设置行数为0,数据清空(不包括表头)
ui->tableWidget->clear();//数据清空,表头也清空

1.2、获取表格的总行数和总列数

int rowCount = ui->tableWidget->rowCount();//行数
int columnCount = ui->tableWidget->columnCount();//列数

1.3、单元格插入和获取数据

1.3.1、在单元格里存取常见类型数据

//存数据方法一
ui->tableWidget->insertRow(0);//在表格第1行插入一行空白行
QTableWidgetItem * item = new QTableWidgetItem(QStringLiteral("张三"));
item->setData(Qt::UserRole,1);//可以在单元格存另外的值,该值不显示在界面上
ui->tableWidget->setItem(0, 0, item );//设置第一行第一列的单元格内容为“张三”

//存数据方法二
ui->tableWidget->insertRow(0);//在表格第1行插入一行空白行
ui->tableWidget->setItem(0,0, new QTableWidgetItem("张三"));

//取数据
QString name = ui->tableWidget->item(0,0)->text();                                      //获取第一行第一列的内容
int id= ui->tableWidget->item(0,0)->data(Qt::UserRole).toInt();                      //获取setData的值

1.3.2、在单元格里存取自定义类型的数据

//存数据
 MyClass  myClass;
 QTableWidgetItem * item = new QTableWidgetItem(myClass.name);
 item->setData(Qt::UserRole, QVariant::fromValue(myClass));
//取数据
MyClass myclass = item->data(Qt::UserRole).value<MyClass>();

1.4、获取当前选中的单元格信息

QTableWidgetItem * item = ui->tableWidget->currentItem();//当前选中的单元格
int currentRow = ui->tableWidget->currentRow();//当前选中的单元格的行
int columnCount = ui->tableWidget->currentColumn();//当前选中的单元格的列

2、样式设置

2.1、单元格样式设置

2.1.1、点击某个单元格时,整行单元格都被选中。

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选择模式-整行选中

2.1.2、单机或者双击单元格时,单元格内容锁定,不允许编辑。

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//不可编辑

2.1.3、单元格文本内容对齐方式

//方法一:通过单独设置Item,再添加到QTableWidget中,可以使表格中的不同列文本排列方式都不同
QTableWidgetItem *item = new QTableWidgetItem(“文本内容”);
item->setTextAlignment(Qt::AlignLeft);//文本居左
item->setTextAlignment(Qt::AlignCenter);//文本居中
item->setTextAlignment(Qt::AlignRight);//文本居右
tablewidget->setItem(row,coloumn,item);//添加到表格中指定位置

//方法二:设置表格item边距,文本会在距item 10像素的位置开始填充
this->setStyleSheet(“QTableWidget::item{border-left:10px solid #FFFFFF;border-right:10px solid #FFFFFF;}”);

2.2、表头样式设置

2.2.1、列宽设置

2.2.1.1、当表头较少无法填充满时,最后一个表头铺满,即行末不留空。
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满
2.2.1.2、表头平均分配列宽
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 平分
2.2.1.3、根据内容大小分配列宽(两行必须都写)
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->horizontalHeader()->sectionResizeMode(QHeaderView::ResizeToContents);

2.2.2、QTableWidget表头下无分隔线不显示的问题

//横向表头
    ui->table->horizontalHeader()->setStyleSheet(
        "QHeaderView::section{"
        "border-top:0px solid #E5E5E5;"
        "border-left:0px solid #E5E5E5;"
        "border-right:0.5px solid #E5E5E5;"
        "border-bottom: 0.5px solid #E5E5E5;"
        "background-color:white;"
        "padding:4px;"
        "}"
        );
        
//纵向表头
    ui->table->horizontalHeader()->setStyleSheet(
        "QHeaderView::section{"
        "border-top:0.5px solid #E5E5E5;"
        "border-left:0px solid #E5E5E5;"
        "border-right:0.5px solid #E5E5E5;"
        "border-bottom: 0px solid #E5E5E5;"
        "background-color:white;"
        "padding:4px;"
        "}"
        );

//左上角第0行第0列的那个格子的边框线
    ui->table->horizontalHeader()->setStyleSheet(
        "QTableCornerButton::section{"
        "border-top:0px solid #E5E5E5;"
        "border-left:0px solid #E5E5E5;"
        "border-right:0.5px solid #E5E5E5;"
        "border-bottom: 0.5px solid #E5E5E5;"
        "background-color:white;"
        "}"
        );
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值