我向嵌入QTableWidget
的窗口小部件添加了右键单击操作。当我单击右键时,QMenu
出现在错误的位置。这是我的代码:
我在QTableWidget
中添加了小部件:
tableWidget = self._dlg.tableWidget
variableLabel = QLabel()
variableLabel.setText(str(var))
variableLabel.setContextMenuPolicy(Qt.CustomContextMenu)
variableLabel.customContextMenuRequested.connect(self.showMenu)
tableWidget.setCellWidget(row, 0, variableLabel)
这里是showMenu:
def showMenu(self, pos):
print("pos", str(pos))
menu = QMenu()
applyAction = menu.addAction("Tümüne Uygula")
action = menu.exec_(self._dlg.mapToGlobal(pos))
if action == applyAction:
...
最后,这是我的结果,当我单击彩色单元格(QLabel
)时,菜单显示如下:
答案 0 :(得分:1)
customContextMenuRequested
发送的位置相对于发布它的小部件,在您的情况下,它与QLabel
相关,假设showMenu()
属于我们可以使用{{1 }}方法来获取它。
sender()
如果def showMenu(self, pos):
menu = QMenu()
applyAction = menu.addAction("Tümüne Uygula")
action = menu.exec_(self.sender().mapToGlobal(pos))
if action == applyAction:
不属于小部件,则必须使用showMenu()
显式传递标签
functools.partial