QTableWidget 用法

本文详细描述了如何在Qt应用中使用QTableWidget控件进行表格设计,包括设置样式、隐藏表头、单元格操作(如双击事件)、以及配合SQL语句实现数据的修改和删除功能。
摘要由CSDN通过智能技术生成

在窗体上拖拽一个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博客

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TableWidget 是 Qt 框架中用于显示表格数据的控件。使用 TableWidget 可以创建一个包含多行多列的表格,每个单元格可以包含文本、图像或者其他控件。 下面是一个简单的 TableWidget 使用示例: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import sys class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建 TableWidget self.table = QTableWidget() self.table.setRowCount(2) # 设置行数 self.table.setColumnCount(3) # 设置列数 self.setCentralWidget(self.table) # 添加表头 self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender']) # 添加数据 self.table.setItem(0, 0, QTableWidgetItem('John')) self.table.setItem(0, 1, QTableWidgetItem('25')) self.table.setItem(0, 2, QTableWidgetItem('Male')) self.table.setItem(1, 0, QTableWidgetItem('Mary')) self.table.setItem(1, 1, QTableWidgetItem('30')) self.table.setItem(1, 2, QTableWidgetItem('Female')) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个示例中,我们首先创建了一个 QTableWidget 控件,并设置了它的行数和列数。然后,我们通过 `setHorizontalHeaderLabels` 方法设置了表头的标签。 最后,我们使用 `setItem` 方法向表格中添加数据。`setItem` 方法的第一个参数是行号,第二个参数是列号,第三个参数是 QTableWidgetItem 对象,用于表示单元格的内容。在这个示例中,我们使用了 QTableWidgetItem 的构造函数来创建一个包含文本的单元格。你可以根据需求使用其他类型的 QTableWidgetItem,比如包含图像或者其他控件的 QTableWidgetItem。 希望这个示例能帮助你了解如何使用 TableWidget 控件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周不易

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

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

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

打赏作者

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

抵扣说明:

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

余额充值