pyqt 代码实现QTableView 选中单元格的信号槽
时间: 2023-06-07 16:09:08 浏览: 78
可以用QTableView的clicked信号和selectionModel的selectionChanged信号来实现选中单元格的信号槽连接。代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QAbstractItemView
from PyQt5.QtCore import pyqtSlot
class MyTableView(QTableView):
def __init__(self, parent=None):
super().__init__(parent)
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionMode(QAbstractItemView.SingleSelection)
self.clicked.connect(self.on_clicked)
self.selectionModel().selectionChanged.connect(self.on_selection_changed)
@pyqtSlot()
def on_clicked(self):
indexes = self.selectedIndexes()
if indexes:
row = indexes[0].row()
column = indexes[0].column()
print("Cell ({}, {}) clicked.".format(row, column))
@pyqtSlot()
def on_selection_changed(self):
indexes = self.selectedIndexes()
if indexes:
row = indexes[0].row()
column = indexes[0].column()
print("Cell ({}, {}) selected.".format(row, column))
if __name__ == '__main__':
app = QApplication([])
window = QMainWindow()
table_view = MyTableView()
window.setCentralWidget(table_view)
window.show()
app.exec_()
```
这段代码创建了一个继承自QTableView的MyTableView类,覆盖了其clicked和selectionModel().selectionChanged信号的槽函数。在on_clicked函数中获取选中的单元格的行和列,然后打印输出;在on_selection_changed函数中获取选中的单元格的行和列,然后打印输出。注意要通过setSelectionBehavior和setSelectionMode函数设置选择模式和选择行为。