PyQt(Python+Qt)学习随笔:toolButton的popupMode属性

属性介绍

toolButton的popupMode属性为设有菜单集或Action列表的toolButton指定菜单弹出模式,类型为枚举类型ToolButtonPopupMode,有如下三种模式:
1、DelayedPopup(值为0):按住toolButton一定时间(超时取决于样式,请参见QStyle.SH_ToolButton_PopupDelay)后,将显示菜单。典型的应用程序示例是一些web浏览器工具栏中的“后退”按钮。如果用户单击它,浏览器只需浏览回上一页。如果用户按下并按住按钮一段时间,工具按钮将显示包含当前历史列表的菜单;

2、MenuButtonPopup(值为1):在此模式下,toolButton显示一个特殊箭头,指示有弹出菜单存在。当按下toolButton上的箭头一部分时,将弹出菜单;

3、InstantPopup(值为2):按下toolButton时,立即显示弹出菜单。toolButton自己对应的Action不会触发。

缺省类型为DelayedPopup,可以通过popupMode()、setPopupMode(ToolButtonPopupMode mode)来读取和设置该属性。

案例

1、案例说明

在一个mainWindow中,设置了个system菜单,system菜单包含Quit和About两个菜单项以及工具栏,对应动作分别为actionQuit和actionAbout。在窗口中部署了个toolButton按钮,界面信息如下:
在这里插入图片描述
Quit菜单对应动作为关闭窗口,与系统槽函数close()关联,About菜单对应动作为显示一个提示信息,与自定义槽函数about()关联。

该界面对应的派生类定义如下:

class Ui_mainWindowWin(QtWidgets.QMainWindow,mainWinTest.Ui_MainWindow):
    def __init__(self):
        super(Ui_mainWindowWin, self).__init__()
        self.setupUi(self)
        self.toolButton.setDefaultAction(self.actionAbout) #将toolButton的点击与actionAbout关联
        self.toolButton.setMenu(self.menusystem) #将窗口菜单同时设置为toolButton的弹出菜单

    def about(self):
        print("In about")
        QMessageBox.information(self,'About','This is a toolButton test!',QMessageBox.Ok)

案例1、将弹出模式设置为DelayedPopup

对应toolButton设置信息如下:
在这里插入图片描述
运行后初始界面如下:
在这里插入图片描述
可以看到直接点击toolButton并立即释放按钮会显示About信息,如下:

在这里插入图片描述
但当点击后不立即释放后弹出了菜单,如图:
在这里插入图片描述

案例2、将弹出模式设置为MenuButtonPopup

对应toolButton设置信息如下:
在这里插入图片描述
运行后初始界面如下:
在这里插入图片描述
点击上图中按钮非右边朝下箭头部分显示About信息,如图:
在这里插入图片描述
点击图中按钮右边朝下箭头部分则弹出菜单,如图:
在这里插入图片描述

案例3、将弹出模式设置为InstantPopup

对应toolButton设置信息如下:
在这里插入图片描述
初始运行界面如下:
在这里插入图片描述
点击toolButton的任何部分都显示弹出菜单,如图:
在这里插入图片描述

大家可以对照这三个案例与上面介绍来验证。

老猿Python,跟老猿学Python!

博文目录

博客地址

posted on 2019-11-23 00:13  老猿Python  阅读(991)  评论(0编辑  收藏  举报