0
我有一個簡單QTableWidget的設置,像這樣:QTableWidget的選擇多個小區鼠標右鍵
self.table= QtGui.QTableWidget()
self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.table.viewport().installEventFilter(self)
self.table.verticalHeader().setResizeMode(2)
self.table.horizontalHeader().setResizeMode(2)
的EventFilter反應:
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseButtonRelease:
if event.button() == QtCore.Qt.LeftButton:
--- LMB action ---
if event.button() == QtCore.Qt.RightButton:
--- RMB action ---
return QtGui.QWidget.eventFilter(self, source, event)
事件只是正常的鼠標左鍵點擊:它既檢測一次點擊,也檢測多個單元。我希望能夠用鼠標右鍵來做同樣的事情 - 現在只能識別人民幣點擊,但我不能選擇多個單元格。我有沒有搞錯事情或者我錯過了什麼?
編輯1: 我用self.table.itemEntered.connect(handleItemPressed)
通過MarkyPython建議,現在我有以下幾點:
def eventFilter(self, source, event):
def handleItemPressed(item):
self.table.setItemSelected(item, 1)
if event.type() == QtCore.QEvent.MouseButtonPress:
if event.button() == QtCore.Qt.RightButton:
self.table.itemEntered.connect(handleItemPressed)
if event.type() == QtCore.QEvent.MouseButtonRelease:
if event.button() == QtCore.Qt.LeftButton:
--- LMB action ---
if event.button() == QtCore.Qt.RightButton:
--- RMB action ---
return QtGui.QWidget.eventFilter(self, source, event)
方式,也有效。我現在可以選擇帶有鼠標右鍵和左鍵的單元格,但是右鍵選擇有點尷尬(你可以想象,它只會選擇懸停的項目/單元格,而不像左側的經典框選擇鼠標按鈕)。所以我的探針幾乎解決了
我將* itemEntered *納入我的代碼中,請參閱我編輯的帖子。感謝您的建議 –
您應該看看這個[site](http://pyqt.sourceforge.net/Docs/PyQt4/qtablewidget.html)瞭解關於'QTableWidget'類的更多信息。它幫了我很多。 – MarkyPython