如何在 QTableView 中发出单元格输入和单元格离开的信号

在从 QTableWidget 切换到 QTableView 以提高我的 GUI 速度的过程中,我开始意识到 QTableView 没有可用的等效 cellEntered 信号。我怎样才能做到这一点?

在这个 GUI 中,我有一个带有 QTableView 的弹出窗口,它在单独的窗口中显示放置在图像上的标记的坐标。当光标移动到 QTableView 坐标表中相应的行或单元格上时,我需要突出显示图像窗口中的标记。所以我需要能够发出信号,而不仅仅是突出显示坐标表中的行。


慕丝7291255
浏览 263回答 2
2回答

扬帆大鱼

信号的等价物cellEntered是entered信号:from PyQt5 import QtGui, QtWidgetsdef main():    app = QtWidgets.QApplication([])    model = QtGui.QStandardItemModel(5, 5)    view = QtWidgets.QTableView()    view.setModel(model)    view.setMouseTracking(True)    def on_entered(index):        print(index.row(), index.column())    view.entered.connect(on_entered)    view.show()    app.exec_()if __name__ == "__main__":    main()

浮云间

由于问题的第二部分没有得到解答,我想解决“如何抓住单元格或物品离开”的问题。因为没有cellLeft或ItemLeft事件,所以必须使用周围单元格的cellEntered事件。要知道单元格何时离开,我们存储每个输入的行和列,并决定何时发生离开事件。class LeaveEvent(QtWidgets.QMainWindow):    def __init__(self):        self.table.cellEntered.connect(self.on_table_cell_entered)        self.prev_idxs = -1, -1    def on_table_cell_entered(self, row, column):        if (row, column) != self.prev_idxs:            print(f'previous cell left: {self.prev_idxs}')        self.prev_idxs = row, column
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python