在窗体上拖拽一个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);}");
通过双击单元格,进入单元格,进行编辑,并对比是否修改了数据,如果修改了更新到数据库。请看另一篇文章: