2012-08-05 121 views
0

我試圖使用PyQt4重新實現QTableWidget.cellActivated(行,數字),以捕獲當前活動單元格的座標。下面的示例不能按預期方式工作,單擊單元格時該方法未激活。我做錯了什麼?QTableWidget.cellActivated()信號不工作?

class DictionaryTable(QtGui.QTableWidget): 

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

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

回答

3

綜觀docs,我看到:

空隙QTableWidget的:: cellActivated(INT行,INT列)信號]

這 信號被髮射的小區時由行和列指定已被激活 已激活此功能是在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 
+0

連接問題已解決,但信號僅在我突出顯示的單元格上按Enter時發出。我預計每次選擇一個新的單元格時都會發出信號(使用標籤或箭頭鍵或鼠標單擊)。 cellEntered不會跟蹤這個。 – Benjamin 2012-08-05 17:53:13

+0

@Benjamin,嘗試像'self.selectionModel()。selectionChanged.connect(self.onSelectionChanged)' – warvariuc 2012-08-05 19:26:06

+0

是的,我想到'selectionChanged'是我需要感謝:) – Benjamin 2012-08-06 12:11:12