QTableWidget添加删除按钮删除行
时间: 2024-01-15 20:51:34 浏览: 40
在QTableWidget中添加删除按钮,可以使用QTableWidgetItem以及QPushButton来实现。具体步骤如下:
1. 在QTableWidget中插入QPushButton。可以使用setCellWidget方法,在指定单元格中插入QPushButton。
```
QPushButton *btnDelete = new QPushButton("删除");
ui->tableWidget->setCellWidget(row, col, btnDelete);
```
2. 为QPushButton添加点击事件。可以使用connect方法,将QPushButton的clicked信号连接到自定义的槽函数中。
```
connect(btnDelete, SIGNAL(clicked(bool)), this, SLOT(onBtnDeleteClicked()));
```
3. 在槽函数中获取当前行,并删除该行。可以使用sender方法获取触发该事件的QPushButton对象,然后使用QTableWidget的removeRow方法删除该行。
```
void MainWindow::onBtnDeleteClicked()
{
QPushButton *btnDelete = qobject_cast<QPushButton *>(sender());
if (btnDelete)
{
int row = ui->tableWidget->indexAt(btnDelete->pos()).row();
ui->tableWidget->removeRow(row);
}
}
```
完整代码如下:
```
void MainWindow::initTableWidget()
{
ui->tableWidget->setColumnCount(2);
ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性别");
QStringList names = {"张三", "李四", "王五", "赵六", "钱七"};
QStringList genders = {"男", "女", "男", "女", "男"};
for (int i = 0; i < names.size(); i++)
{
int row = ui->tableWidget->rowCount();
ui->tableWidget->insertRow(row);
QTableWidgetItem *item1 = new QTableWidgetItem(names[i]);
QTableWidgetItem *item2 = new QTableWidgetItem(genders[i]);
ui->tableWidget->setItem(row, 0, item1);
ui->tableWidget->setItem(row, 1, item2);
QPushButton *btnDelete = new QPushButton("删除");
ui->tableWidget->setCellWidget(row, 2, btnDelete);
connect(btnDelete, SIGNAL(clicked(bool)), this, SLOT(onBtnDeleteClicked()));
}
}
void MainWindow::onBtnDeleteClicked()
{
QPushButton *btnDelete = qobject_cast<QPushButton *>(sender());
if (btnDelete)
{
int row = ui->tableWidget->indexAt(btnDelete->pos()).row();
ui->tableWidget->removeRow(row);
}
}
```