Qtablewidget 点击空白单元格程序崩溃
时间: 2023-07-25 09:18:59 浏览: 65
在 `QTableWidget` 中,如果单击了空白单元格,可能会导致程序崩溃,这是因为 `QTableWidget` 并没有默认处理这种情况的方法。解决这个问题的方法是在程序中添加一个 `itemSelectionChanged` 信号的槽函数,并在该槽函数中处理空白单元格的情况。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QMainWindow, QTableWidget, QApplication, QTableWidgetItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_widget = QTableWidget()
self.table_widget.itemSelectionChanged.connect(self.handle_item_selection_changed)
self.setCentralWidget(self.table_widget)
# 添加表格内容
self.table_widget.setRowCount(5)
self.table_widget.setColumnCount(5)
for i in range(5):
for j in range(5):
item = QTableWidgetItem('Item {}-{}'.format(i, j))
self.table_widget.setItem(i, j, item)
def handle_item_selection_changed(self):
selected_items = self.table_widget.selectedItems()
if len(selected_items) == 0:
print('No item selected')
else:
selected_item = selected_items[0]
row = selected_item.row()
column = selected_item.column()
item_text = selected_item.text()
print('Selected item:', item_text, 'at row', row, 'and column', column)
```
在上面的代码中,我们为 `QTableWidget` 的 `itemSelectionChanged` 信号设置了一个槽函数 `handle_item_selection_changed`。当用户选择或取消选择表格中的任何一个单元格时,该槽函数将被调用。在该槽函数中,我们首先获取当前选择的所有单元格,如果没有单元格被选择,则打印出 "No item selected" 的信息。否则,我们获取第一个选择的单元格的行、列和文本内容,并打印出这些信息。这样,即使用户单击空白单元格,程序也不会崩溃。