• Qt自定义弹出式菜单(Qt自定义弹窗)


     需求:写一个自定义弹出菜单,

    1、单击按钮时展现,单击空白处或再次单击按钮则隐藏

    2、菜单内容可以是自定义的widget

    3、可以自定义弹出菜单的方向

    (可以参考用来实现至任意组件的下拉框)

    解决思路:

    由于要自定义弹出菜单的方向,而QToolButton的showMenu无法自定义弹出方向,所以一开始想到的方案是

    1、QToolButton+独立的QMenu,QToolButton收到单击事件时调用QWidget的show;这样做会发现一个问题,尽管单击空白处可以隐藏弹窗,但是再次单击按钮的时候这个弹窗会又一次弹起(弹窗的隐藏总会先于单击事件的处理),无法满足要求1。

    2、QToolButton+自定义QWidget的方案,单击空白隐藏不好控,且容易出现方案1的问题。

    解决方案:

    要求1可以通过QToolButton的showMenu满足(QToolButton+自定义QWidget的方案行不通);

    要求2可以通过QWidgetAction满足;

    要求3可以通过通过子类化QMenu,在showEvent中移到相应的位置满足;

    github:Demo_QMenu

  • 相关阅读:
    swift基础语法(05- 可选值)
    swift基础语法(03- 运算符)
    swift基础语法(04- 元组)
    swift基础语法(02-基本数据类型)
    tableView的全屏穿透效果的实现
    ScrollView属性解析
    TableView的重要性
    SQLite操作
    openFileOutput的几种文件模式
    保存文件到SDcard
  • 原文地址:https://www.cnblogs.com/SwiftChocolate/p/15600205.html
Copyright © 2020-2023  润新知