【问题标题】:QTableWidget.cellActivated() signal not working?QTableWidget.cellActivated() 信号不起作用?
【发布时间】:2012-08-05 12:06:56
【问题描述】:

我尝试使用 PyQt4 重新实现 QTableWidget.cellActivated(row, number),以捕获当前活动单元格的坐标。下面的示例未按预期工作,单击单元格时未激活该方法。我是不是做错了什么?

class DictionaryTable(QtGui.QTableWidget):

    def __init__(self, parent=None):
        QtGui.QTableWidget.__init__(self, parent)

    def cellActivated(self, row, column):
        print row, column 

【问题讨论】:

    标签: qt4 signals pyqt4 qtablewidget


    【解决方案1】:

    看着docs,我明白了:

    void QTableWidget::cellActivated ( int row, int column ) [信号]

    这个 当行和列指定的单元格已被发送时发出信号 已激活此功能是在 Qt 4.1 中引入的。

    这是一个信号,而不是一个事件。所以你不需要[重新]实现cellActivated方法(它不是一个方法,它是一个信号类型的类属性)。您需要连接到信号:

    class DictionaryTable(QtGui.QTableWidget):
    
        def __init__(self, language_code, parent=None):
            QtGui.QTableWidget.__init__(self, parent)
            self.cellActivated.connect(self.handleCellActivated)
    
        def handleCellActivated(self, row, column):
            print row, column 
    

    【讨论】:

    • 连接问题已解决,但仅当我在突出显示的单元格上按 Enter 时才会发出信号。我希望每次选择新单元格时都会发出信号(使用制表符或箭头键或鼠标单击)。 cellEntered 也不跟踪这个。
    • @Benjamin,试试self.selectionModel().selectionChanged.connect(self.onSelectionChanged)
    • 是的,我发现 selectionChanged 是我需要的,谢谢 :)
    猜你喜欢
    • 2021-04-21
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多