pyQt 中 QMenu 响应

这篇博客介绍了如何在Qt界面中为菜单添加响应动作。由于QMenu没有直接的clicked()信号,作者通过QMenu的triggered()信号结合QAction来实现。具体步骤包括创建QMenu和QAction,将QAction添加到菜单,并连接到相应的槽函数changeImgSavePath(),该函数用于改变截图保存路径。当用户点击菜单项时,会弹出对话框让用户选择新的保存目录。
摘要由CSDN通过智能技术生成

需求场景:

在qt界面中,需要给菜单添加响应动作。

实现:

查看了QMenu 对象源码,没有找到类似QPushButton.clicked()的信号函数。只发现了QMenu.triggered() 函数,已经常用的QMenu.addAction()。就是说,只能通过triggered触发出菜单列表,在菜单列表中添加QAction(),使用QAction()关联对应的槽函数,实现操作响应。

具体实现:

  • qt界面中的控件关联关系:
# UI 关联
menuBar = QtWidgets.QMenuBar() # 菜单栏
menuBar.setGeometry(QtCore.QRect(0, 0, 1245, 23))
menuBar.setObjectName("menuBar")

menu = QtWidgets.QMenu() # 菜单按钮
menu.setObjectName("menu")
menu_check = QtWidgets.QMenu(menuBar)
menu_check.setObjectName("menu_check")

actionSavePicture = QtWidgets.QAction() # 动作响应,修改存放路径
actionSavePicture.setObjectName("actionSavePicture")

menu.addAction(actionSavePicture) # 菜单按钮添加动作
  • 后端响应代码中的信号槽关联
actionSavePicture.triggered.connect(changeImgSavePath)

def changeImgSavePath():
    # 获取目录路径
    save_path = QFileDialog.getExistingDirectory(None, caption='选择截图存放目录')
    if save_path:
        img_save_path = save_path
        cam_conf = CameraConfig()
        cam_conf.img_save_path = save_path
        cam_conf._update_cfg_file()
        QMessageBox.about(None, '提示', f'截图存放目录变更为:{save_path}')
    else:
        QMessageBox.about(None, '提示', '截图存放目录未变更')
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值