QTTablewidget 删除选中的行
时间: 2024-01-28 12:04:36 浏览: 103
Qt tableWidget删除多行
要删除QTTableWidget中选中的行,可以使用selectedItems()方法获取选中的单元格,然后通过其行号来删除对应的行。下面是一个示例代码:
```python
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, QWidget, QApplication
class MyTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setColumnCount(2)
self.setHorizontalHeaderLabels(['Name', 'Gender'])
self.addRow(["Tom", "Male"])
self.addRow(["Lucy", "Female"])
self.addRow(["Bob", "Male"])
def deleteSelectedRows(self):
selected = self.selectedItems()
if selected:
rows = set()
for item in selected:
rows.add(item.row())
for row in sorted(rows, reverse=True):
self.removeRow(row)
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.tableWidget = MyTableWidget()
self.deleteButton = QPushButton("Delete Selected Rows")
self.deleteButton.clicked.connect(self.tableWidget.deleteSelectedRows)
layout = QVBoxLayout(self)
layout.addWidget(self.tableWidget)
layout.addWidget(self.deleteButton)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在上述代码中,我们在MyTableWidget中定义了一个deleteSelectedRows()方法,用于删除选中的行。该方法首先使用selectedItems()方法获取选中的单元格,然后使用set()将对应的行号保存到一个集合中,最后使用removeRow()方法删除这些行。
在MyWidget中,我们创建了一个MyTableWidget实例和一个QPushButton,将其点击事件连接到tableWidget的deleteSelectedRows()方法上,这样就实现了删除选中行的功能。
阅读全文