为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2023-05-09 10:49:13
在从 QTableWidget 切换到 QTableView 以提高我的 GUI 速度的过程中,我开始意识到 QTableView 没有可用的等效 cellEntered 信号。我怎样才能做到这一点?在这个 GUI 中,我有一个带有 QTableView 的弹出窗口,它在单独的窗口中显示放置在图像上的标记的坐标。当光标移动到 QTableView 坐标表中相应的行或单元格上时,我需要突出显示图像窗口中的标记。所以我需要能够发出信号,而不仅仅是突出显示坐标表中的行。
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

信号的等价物cellEnteredentered信号:

from PyQt5 import QtGui, QtWidgets



def 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()


查看完整回答
反对 回复 2023-05-09
?
浮云间

TA贡献1829条经验 获得超4个赞

由于问题的第二部分没有得到解答,我想解决“如何抓住单元格或物品离开”的问题。


因为没有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


查看完整回答
反对 回复 2023-05-09
  • 2 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信