如何在左键单击上显示QMenu

字母数字

QMenu节目上了一个QLineEdit右键单击。问题:如何修改此代码以在单击鼠标左键时也显示菜单?

在此处输入图片说明

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class MyWindow(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)

    def actionFunct(self, argBool):
        print 'actionFunct()', argBool

    def buildGUI(self):
        self.line=QLineEdit(self)
        self.line.setText('My Line Edit')      

        self.menu=QMenu(self.line)

        self.line.installEventFilter(self)
        self.menu.installEventFilter(self)

        for i in range(3):
            actn=QAction('Action 0%s'%i, self.menu, checkable=True)
            actn.triggered.connect(self.actionFunct)
            self.menu.addAction(actn)

        self.line.setContextMenuPolicy(Qt.CustomContextMenu)
        self.line.connect(self.line, SIGNAL("customContextMenuRequested(QPoint)" ), self.lineClicked)

        layout=QVBoxLayout(self)
        layout.addWidget(self.line)
        self.setLayout(layout)

    def lineClicked(self, QPos):
        print 'lineClicked', QPos
        parentPosition = self.line.mapToGlobal(QPoint(0, 0))        
        menuPosition = parentPosition + QPos

        self.menu.move(menuPosition)
        self.menu.show() 

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyWindow()
    w.buildGUI()
    w.show()
    sys.exit(app.exec_())
布伦丹·亚伯

您需要在Window类上定义一个eventFilter方法来过滤/处理事件。

def eventFilter(self, obj, event):
    if obj == self.line and isinstance(event, QMouseEvent) and event.buttons() & Qt.LeftButton:
        self.lineClicked(event.pos())
        return True
    return False

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在编辑控件上获得左键单击通知?

来自分类Dev

如何在单击鼠标左键时显示WebBrowser控件上下文菜单

来自分类Dev

左键单击如何在QSystemTrayIcon中显示上下文菜单

来自分类Dev

如何在d3中的左键单击上禁用平移

来自分类Dev

如何在Angular中触发移位+鼠标左键单击

来自分类Dev

如何在鼠标左键单击时禁用jqgrid的行选择

来自分类Dev

在数据表上显示contextMenu左键单击和右键单击

来自分类Dev

在数据表上显示contextMenu左键单击和右键单击

来自分类Dev

如何在pygame中区分左键单击,右键单击鼠标单击?

来自分类Dev

如何在swt中通过鼠标左键显示弹出菜单?

来自分类Dev

如何检测鼠标左键单击,而不是在UI按钮组件上单击时检测

来自分类Dev

如何检测右键单击+左键单击

来自分类Dev

如何在swt.browser中启用左键单击拖动或右键单击

来自分类Dev

单击鼠标左键后显示文本

来自分类Dev

如何在glyphicon单击上突出显示contentEditable span

来自分类Dev

如何在imageView单击上全屏显示imageView?

来自分类Dev

如何在多个通知单击上显示适当的消息

来自分类Dev

单击JButton时如何在JWIndow上显示图像?

来自分类Dev

如何在imageView单击上全屏显示imageView?

来自分类Dev

用户单击时如何在屏幕上显示<p>

来自分类Dev

如何在Visual Studio Code中关闭或重新映射Ctrl +左键单击

来自分类Dev

如何在Pygame中同时检测鼠标左键和右键单击

来自分类Dev

如何覆盖* only *左键单击锚点?

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

仅单击QMenu对象如何执行操作?

来自分类Dev

仅单击QMenu对象如何执行操作?

来自分类Dev

如何在Android Xamarin Visual Studio中单击按钮上的MvxListView上显示新项目

来自分类Dev

当我左键单击图像时,菜单应以wpf显示

Related 相关文章

  1. 1

    如何在编辑控件上获得左键单击通知?

  2. 2

    如何在单击鼠标左键时显示WebBrowser控件上下文菜单

  3. 3

    左键单击如何在QSystemTrayIcon中显示上下文菜单

  4. 4

    如何在d3中的左键单击上禁用平移

  5. 5

    如何在Angular中触发移位+鼠标左键单击

  6. 6

    如何在鼠标左键单击时禁用jqgrid的行选择

  7. 7

    在数据表上显示contextMenu左键单击和右键单击

  8. 8

    在数据表上显示contextMenu左键单击和右键单击

  9. 9

    如何在pygame中区分左键单击,右键单击鼠标单击?

  10. 10

    如何在swt中通过鼠标左键显示弹出菜单?

  11. 11

    如何检测鼠标左键单击,而不是在UI按钮组件上单击时检测

  12. 12

    如何检测右键单击+左键单击

  13. 13

    如何在swt.browser中启用左键单击拖动或右键单击

  14. 14

    单击鼠标左键后显示文本

  15. 15

    如何在glyphicon单击上突出显示contentEditable span

  16. 16

    如何在imageView单击上全屏显示imageView?

  17. 17

    如何在多个通知单击上显示适当的消息

  18. 18

    单击JButton时如何在JWIndow上显示图像?

  19. 19

    如何在imageView单击上全屏显示imageView?

  20. 20

    用户单击时如何在屏幕上显示<p>

  21. 21

    如何在Visual Studio Code中关闭或重新映射Ctrl +左键单击

  22. 22

    如何在Pygame中同时检测鼠标左键和右键单击

  23. 23

    如何覆盖* only *左键单击锚点?

  24. 24

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  25. 25

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  26. 26

    仅单击QMenu对象如何执行操作?

  27. 27

    仅单击QMenu对象如何执行操作?

  28. 28

    如何在Android Xamarin Visual Studio中单击按钮上的MvxListView上显示新项目

  29. 29

    当我左键单击图像时,菜单应以wpf显示

热门标签

归档