PyQt5创建右键菜单QTableView实现右键菜单

这里写图片描述

上面的软件,最左侧是QList,中间是QLabelView,准备给中间的表格加个右键菜单,主要代码如下

self.view.setContextMenuPolicy(Qt.CustomContextMenu)  # 右键菜单,如果不设为CustomContextMenu,无法使用customContextMenuRequested
        self.view.customContextMenuRequested.connect(self.showContextMenu)
    
    
  • 1
  • 2
def showContextMenu(self):  # 创建右键菜单
        self.view.contextMenu = QMenu(self)
        self.actionA = self.view.contextMenu.addAction(u'动作a')
        # self.actionA = self.view.contextMenu.exec_(self.mapToGlobal(pos))  # 1
        self.view.contextMenu.popup(QCursor.pos())  # 2菜单显示的位置
        self.actionA.triggered.connect(self.actionHandler)
        # self.view.contextMenu.move(self.pos())  # 3
        self.view.contextMenu.show()
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">actionHandler</span><span class="hljs-params">(self)</span>:</span>
    <span class="hljs-keyword">print</span> <span class="hljs-string">"成功"</span><div class="hljs-button {2}" data-title="复制"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li></ul></pre> 

建立菜单很快,主要是位置问题,可以看到代码中关于位置的就有三条,1和3效果一样,他获取到的位置是在表格中的位置,菜单却出现在整个软件的相对位置上,只有2获得的位置是准确的

def showContextMenu(self, pos):  # 创建右键菜单
        self.view.contextMenu = QMenu(self)
        self.actionA = self.view.contextMenu.addAction(u'动作a')
        # self.actionA = self.view.contextMenu.exec_(self.mapToGlobal(pos))  # 1
        self.view.contextMenu.popup(QCursor.pos())  # 2菜单显示的位置
        self.actionA.triggered.connect(self.actionHandler)
        # self.view.contextMenu.move(self.pos() + pos)  # 3
        self.view.contextMenu.show()
 def actionHandler(self):
    print "成功"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值