QTableWidget 双击单元格修改数据

发布时间:2024年01月23日

本章介绍通过双击单元格,进入单元格,进行编辑,并对比是否修改了数据,如果修改了更新到数据库。

其他关于QTableWidget的操作,请查看上一篇文章《QTableWidget 用法-CSDN博客

修改单元格内容,与原值比较,如果有变化,更新到数据库

需要将以下代码注释,否则不能双击单元格,进入编辑模式

绑定双击单元格修改事件

connect(ui->tableWidget,&QTableWidget::itemChanged,[=](QTableWidgetItem *item){

if(!item)

return;

int row = item->row();

int col = item->column();

qDebug()

});

需要创建一个变量,用于存储表格的原始数据,对比修改后的数据用,单元格所在的行和列为Key,单元格中的数据为value

QMap<QPair<int, int>, QString> originalValuesMap;

以下代码在初始化表格内数据完成时,写在最后边即可

for (int row = 0; row < ui->tableWidget->rowCount(); ++row) {

for (int col = 0; col < ui->tableWidget->columnCount(); ++col) {

originalValuesMap[qMakePair(row, col)] = ui->tableWidget->item(row,col)->text();

}

}

实现编辑及保存?

connect(ui->tableWidget,&QTableWidget::itemChanged,[=](QTableWidgetItem *item){

if(!item)

return;

int row = item->row();

int col = item->column();

qDebug()

//取单元格原来的数据

QString originalValue = originalValuesMap[qMakePair(row, col)];

//本次修改完的数据

QString newValue = item->text();

qDebug()

//如果数据被修改

if(originalValue!=newValue)

{

// 根据行和列更新数据库中的值

// 请根据你的数据库连接和表结构进行实际实现

// 示例:假设表名为 YourTable,列名为 Column1 和 Column2

QSqlQuery query;

query.prepare("UPDATE YourTable SET Column" + QString::number(col + 1) + " = :value WHERE ID = :id");

query.bindValue(":value", newValue);

query.bindValue(":id", row + 1);?

query.exec();

}

});

文章来源:https://blog.csdn.net/zhouhui1982/article/details/135764184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。