1. 程式人生 > 其它 >pyqt5 滑鼠位置呼叫itemAt、tabAt等函式的位置問題

pyqt5 滑鼠位置呼叫itemAt、tabAt等函式的位置問題

技術標籤:pyqt5python

最近用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)

即可獲得相應資訊