pyqt5 滑鼠位置呼叫itemAt、tabAt等函式的位置問題
阿新 • • 發佈:2021-02-13
最近用pyqt5的QTabWidget,想做右鍵刪除的功能,呼叫tabAt(QCursor().pos())卻總返回-1,上網搜尋資料也沒找到詳細的說明。
最後自己實驗發現是因為tabAt()需要控制元件內的座標,而QCursor().pos()返回的是滑鼠相對於螢幕的座標,需要進行轉換。轉換方法很簡單,在QCursor().pos()的文件內也有說明:
也就是說,使用mapFromGlobal方法即可將全域性座標轉化為控制元件內座標:
# TableWidget獲取item
itemPos = self.tableWidget.mapFromGlobal( QCursor().pos())
item = self.tableWidget.itemAt(itemPos)
# TabWidget獲取Tab的index
tabPos = tabWidget.mapFromGlobal(QCursor().pos())
tabIndex = tabWidget.tabAt(tabPos)
即可獲得相應資訊