pyqt右键菜单
2015-12-10 09:04
549 查看
从Qt文档Qt::ContextMenuPolicy的值可以看出,实现右键菜单的方式有三种,这对于所有继承于QWidget的类都是通用的,在用每一种方式实现之前都要调用QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy)方法,将要需要设置右键菜单的组件的ContextMenuPolicy值设为相应的值,下面我分享一下用Qt::CustomContextMenu方式实现右键菜单的例子,用的是python语言,因为python比较简单。
#coding=utf-8
importsys
fromPyQt4importQtGui
fromPyQt4.QtCoreimportQt
classMainWindow(QtGui.QMainWindow):
def__init__(self):
super(MainWindow,self).__init__()
self.createContextMenu()
defcreateContextMenu(self):
'''
创建右键菜单
'''
#必须将ContextMenuPolicy设置为Qt.CustomContextMenu
#否则无法使用customContextMenuRequested信号
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showContextMenu)
#创建QMenu
self.contextMenu=QtGui.QMenu(self)
self.actionA=self.contextMenu.addAction(u'动作A')
self.actionB=self.contextMenu.addAction(u'动作B')
self.actionC=self.contextMenu.addAction(u'动作C')
#将动作与处理函数相关联
#这里为了简单,将所有action与同一个处理函数相关联,
#当然也可以将他们分别与不同函数关联,实现不同的功能
self.actionA.triggered.connect(self.actionHandler)
self.actionB.triggered.connect(self.actionHandler)
self.actionB.triggered.connect(self.actionHandler)
defshowContextMenu(self,pos):
'''
右键点击时调用的函数
'''
#菜单显示前,将它移动到鼠标点击的位置
self.contextMenu.move(self.pos()+pos)
self.contextMenu.show()
defactionHandler(self):
'''
菜单中的具体action调用的函数
'''
print'actionhandler'
if__name__=='__main__':
app=QtGui.QApplication(sys.argv)
window=MainWindow()
window.show()
sys.exit(app.exec_())
相关文章推荐
- Qt信息隐藏(Q_D/Q_Q)介绍——从二进制兼容讲起
- Qt中如果通过QStyle自定义能够跨平台的界面控件
- QT中静态库的生成与使用——创建共享库代码,附例子
- 调色板类QPalette——包含了Qt窗口不见的颜色组(collor group),和Windows右键属性外观非常类似
- Qt 不规则窗体的实现(构造函数里setPaletteBackgroundPixmap后设置setMask)
- QT学习交流群
- 自学QT之qFind的用法
- 自学QT之static_cast<int>
- 自学QT之QT开发文件MD5计算器源码
- 自学QT之QT写的程序是否必须开源?
- 自学QT之数字时钟
- 自学Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- 自学QT之QMutableListIterator
- 自学QT之歌曲列表
- 自学QT之从对话框弹出对话框
- 自学QT之获取目录下的全部文件并且添加到tablev中
- 自学QT之实现窗口分割QSplitter的使用
- 自学QT之堆栈窗口
- 自学QT之实现窗口移动
- 自学QT之任务栏预览视图按钮