当前位置:网站首页>pyQt 中 QMenu 响应

pyQt 中 QMenu 响应

2022-06-24 06:57:00 Qredsun

需求场景:

在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, '提示', '截图存放目录未变更')
原网站

版权声明
本文为[Qredsun]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_17328759/article/details/125381057