QTableWidget 用法

发布时间:2024年01月23日

在窗体上拖拽一个TabWidget控件,默认的名称应为tabWidget

//表格样式

ui->tableWidget->resizeColumnsToContents(); //调整每一列的宽度,使其适应该列中最宽的内容。确保表格内容以最佳方式显示。

ui->tableWidget->verticalHeader()->setVisible(false); //隐藏行表头

// ui->tableWidget->horizontalHeader()->setVisible(false); //隐藏列表头

ui->tableWidget->horizontalHeader()->setSectionsClickable(false); //无法通过点击表头来进行排序

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); //列宽设置

//QHeaderView::Stretch:根据窗口大小将每列等比填满,并随窗口变化变化

//QHeaderView::ResizeToContents:根据内容自适应

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //不能通过双击单元格或其他方式直接编辑表格中的内容

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

ui->tableWidget->setRowCount(6); //行数 6行

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

ui->tableWidget->setHorizontalHeaderLabels({"列表头ID","列表头Name","列表头Pwd"});

// ui->tableWidget->setColumnHidden(0,true); //隐藏第一列 第一列一般都是用于删除和修改用的id

ui->tableWidget->horizontalHeader()->setMinimumHeight(50); //列表头高度

// ui->tableWidget->setColumnWidth(0,200); //设置第一列宽度=100 注意与上边的 列宽设置 有冲突,列宽设置会覆盖此项设置

//初始化表格数据

//给第一列ID赋值

for (int i = 0; i < 6; ++i) {

QTableWidgetItem* item = new QTableWidgetItem(QString("%1").arg(i + 1));

item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); //内容居中,水平居中

//第一个参数AlignHCenter中 AlignLeft左 AlignRight右

//第二个参数AlignTop上 AlignVCenter中 AlignBottom下

ui->tableWidget->setItem(i, 0, item);

ui->tableWidget->setRowHeight(i,50); //设置行高度

}

//给第二列Name赋值

for (int i = 0; i < 6; ++i) {

QTableWidgetItem* item = new QTableWidgetItem("name"+QString::number(i));

item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

ui->tableWidget->setItem(i, 1, item);

}

//给第三列Pwd赋值

for (int i = 0; i < 6; ++i) {

QTableWidgetItem* item = new QTableWidgetItem("123"+QString::number(i));

item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

ui->tableWidget->setItem(i, 2, item);

}

当我们在选中某一行需要实现删除或修改功能时,一般都是取每一列的ID,因为ID是唯一的

修改用的sql语句

update tableA set Name='name',Pwd='123' where ID=1

删除用的sql语句

delete from tabelA where ID=1

以下代码加在修改按钮下,可以获取选中行的内容,配合上边的Sql语句,实现修改和删除功能。

//没有选中行

if(ui->tableWidget->currentRow()

return;

//选中行第1列 id

int nID = ui->tableWidget->item(ui->tableWidget->currentRow(),0)->text().toInt();

//选中行第2列 name

QString strName = ui->tableWidget->item(ui->tableWidget->currentRow(),1)->text();

//选中行第3列 pwd

QString strPwd = ui->tableWidget->item(ui->tableWidget->currentRow(),2)->text();

qDebug()

给表格绑定双击事件

// 绑定双击事件到槽函数

connect(ui->tableWidget,&QTableWidget::doubleClicked,[=]{

//没有选中行

if(ui->tableWidget->currentRow()

return;

//选中行第1列 id

int nID = ui->tableWidget->item(ui->tableWidget->currentRow(),0)->text().toInt();

//选中行第2列 name

QString strName = ui->tableWidget->item(ui->tableWidget->currentRow(),1)->text();

//选中行第3列 pwd

QString strPwd = ui->tableWidget->item(ui->tableWidget->currentRow(),2)->text();

qDebug()

});

表格样式

//列表头颜色

ui->tableWidget->setStyleSheet("QHeaderView::section:horizontal{border-bottom:1px solid rgb(0, 170, 255);background-color: rgb(37, 70, 166);}");

通过双击单元格,进入单元格,进行编辑,并对比是否修改了数据,如果修改了更新到数据库。请看另一篇文章:

QTableWidget 双击单元格修改数据-CSDN博客

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