qt tablewidget删除选中行
时间: 2023-11-09 08:07:01 浏览: 164
可以通过以下代码实现删除选中行:
```python
# 获取选中行
selectedRows = self.tableWidget.selectedItems()
rows = set()
for item in selectedRows:
rows.add(item.row())
# 删除选中行
for row in sorted(rows, reverse=True):
self.tableWidget.removeRow(row)
```
其中,`self.tableWidget` 是 `QTableWidget` 对象。首先获取所有选中的单元格,然后将它们所在的行存储到集合中。最后,倒序遍历集合中的行号,逐个删除行。
相关问题
QTTablewidget 删除选中的行
要删除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()方法上,这样就实现了删除选中行的功能。
qt tablewidget右键删除
在Qt的TableWidget中实现通过右键删除的功能可以通过以下步骤完成。
1. 首先,我们需要为TableWidget添加一个右键菜单。我们可以通过在TableWidget的构造函数中添加以下代码来实现:
```cpp
QMenu *menu = new QMenu(this);
menu->addAction("删除", this, SLOT(deleteSelectedRows()));
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint)));
void TableWidget::showContextMenu(const QPoint &pos)
{
QPoint globalPos = this->mapToGlobal(pos);
menu->exec(globalPos);
}
```
2. 接下来,我们创建了一个名为deleteSelectedRows的槽函数,以便在点击删除菜单项时执行删除操作:
```cpp
void TableWidget::deleteSelectedRows()
{
QList<QTableWidgetItem*> selectedItems = this->selectedItems();
if (!selectedItems.isEmpty()) {
foreach(QTableWidgetItem* item, selectedItems){
int row = this->row(item);
this->removeRow(row);
}
}
}
```
3. 最后,我们将deleteSelectedRows槽函数与右键菜单的“删除”项进行连接。
通过上述步骤,我们成功地实现了Qt TableWidget中通过右键删除行的功能。当用户在TableWidget上右键点击时,会出现一个菜单,用户可以选择删除操作,选中要删除的行,然后通过点击菜单项进行删除。
阅读全文