QT之二级菜单

QT之二级菜单QT之二级菜单QT之二级菜单开场白效果图上代码可参考文章下代码结尾开场白今天我们一起来了解下,在我们QT中,二级菜单是如何实现的,在上篇我们学习了QT之系统托盘,QT之自定义菜单,QT之样式styleSheet。今天我们在这基础上,增加二级菜单的功能。效果图大家注意下这里箭头,不是用的默认效果哦,还是自定义的好看哈!O(∩_∩)下面这张图示是默认的。上代码voi

大家好,又见面了,我是你们的朋友全栈君。

QT之二级菜单

开场白

今天我们一起来了解下,在我们QT中,二级菜单是如何实现的,在上篇我们学习了QT之系统托盘QT之自定义菜单, QT之样式styleSheet。今天我们在这基础上,增加二级菜单的功能。

效果图

menu

大家注意下这里箭头,不是用的默认效果哦,还是自定义的好看哈!O(∩_∩)下面这张图示是默认的。
这里写图片描述

上代码

void SysTray::addSysTrayMenu()
{
    CustomMenu* customMenu = new CustomMenu(m_parent);
    customMenu->addCustomMenu("onGame", TRAY_ICON, tr("onGame"));
    customMenu->addSeparator();
    customMenu->addCustomMenu("onShow", TRAY_ICON, tr("onShow"));
    customMenu->addSeparator();
    customMenu->addCustomMenu("onQuit", CLOSE_MENU, tr("onQuit"));

    //子菜单添加和主菜单都是一样流程。
    CustomMenu* customSubMenu = new CustomMenu(m_parent);
    customSubMenu->addCustomMenu("onBottom", TRAY_ICON_ONDNF, tr("onBottom"));
    customSubMenu->addCustomMenu("onMusic", TRAY_ICON_ONMUSIC, tr("onMusic"));
    customSubMenu->addCustomMenu("onFire", TRAY_ICON_ONFIRE, tr("onFire"));
    customSubMenu->addCustomMenu("onCar", TRAY_ICON_ONCAR, tr("onCar"));
    customSubMenu->addCustomMenu("onLol", TRAY_ICON_ONLOL, tr("onLol"));
    //关键在这里,为QQ游戏添加子菜单。
    customMenu->getAction("onGame")->setMenu(customSubMenu);

    connect(customMenu->getAction("onShow"), SIGNAL(triggered(bool)), m_parent, SLOT(onShowNormal()));
    connect(customMenu->getAction("onQuit"), SIGNAL(triggered(bool)), m_parent, SLOT(onShowQuit()));
    customMenu->exec(QCursor::pos());
    delete customMenu;
    delete customSubMenu;
}
//自定义效果图
QMenu {
    border-width:2;
    border-image:url(:/Demo/Resources/common_menuborder.png);
}
QMenu::item { padding: 6px 24px 6px 28px;
}

QMenu::icon { padding: 0px 0px 0px 9px;
}

QMenu::separator { margin-left:24;
    margin-right:4;
    border-image: url(:/Demo/Resources/menu_separate.png);
}
QMenu::item:selected { border-image:url(:/Demo/Resources/menu_hover.png);
    padding: 6px 24px 6px 28px;
}
QMenu::item:hover { border-image:url(:/Demo/Resources/menu_hover.png);
    padding: 6px 24px 6px 28px;
}

QMenu::right-arrow { image: url(:/Demo/Resources/common/arrow_up.png);
}

可参考文章

QT之系统托盘
QT之自定义菜单
QT之样式styleSheet

下代码

QT二级菜单

结尾

只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135833.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java接口和抽象类的异同_抽象类的控制符是什么

    java接口和抽象类的异同_抽象类的控制符是什么之前Java接口中的方法默认都是public abstract,成员变量默认都是public static final,偶然发现接口中可以有default类型的方法,才知道java8中接口可以有自己的实现了。那么jdk1.8究竟对接口做了哪些修改呢?(1) 增加default方法。default方法作用范围也是public,只是有了具体实现的方法体。对已有的接口,如果想对接口增加一个新方法,那么需要对所有实现该接口的类进行修改。而有了default方法,可以解决该问题。(2) 新增static方法。st

    2022年8月8日
    7
  • nrm使用报错_重大错报

    nrm使用报错_重大错报nrm使用错误:ERR_INVALID_ARG_TYPE

    2025年7月7日
    4
  • 计算机发展概述教案_计算机的过去与未来 教案

    计算机发展概述教案_计算机的过去与未来 教案《计算机发展史教案》由会员分享,可在线阅读,更多相关《计算机发展史教案(3页珍藏版)》请在人人文库网上搜索。1、计算机发展与应用说课稿教材分析本课选自七年级信息技术上第三课,计算机的产生与发展。本课的内容较多,经过我的分析,我这节课的内容为:1,计算机的产生2,计算机的发展历史3,计算机的未来发展方向。本课知识为了解性知识,学生学完本课可以了解到今生今世的产生与发展历史,并且理解计算机的未来发展方…

    2022年10月18日
    3
  • Java程序设计(面向对象)- 相关内容[通俗易懂]

    Java程序设计(面向对象)- 相关内容[通俗易懂]Java程序设计(面向对象)- 相关内容

    2022年4月22日
    38
  • 时序逻辑电路基础_时序逻辑电路的逻辑功能

    时序逻辑电路基础_时序逻辑电路的逻辑功能题目:简述建立时间和保持时间,作图说明建立时间Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间Th(hold):触发器在时钟上升沿到来之后,其数

    2022年8月4日
    6
  • Centos8 部署Promethus(普罗米修斯)+grafana画图「建议收藏」

    Centos8 部署Promethus(普罗米修斯)+grafana画图「建议收藏」文章目录1.普罗米修斯概述2.时间序列数据2.1.普罗米修斯概述Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。2.时间序列数据什么是序列数据时间序列数据(TimeSeriesData):按照时间顺序记录系统、设备状态变化的数据被称为时序数据。应用的场景很多,如:气候的变化某一个地区的各车辆的行驶轨迹数据传统证券行业实时交易数据实时运维监控数据等时间序列数据特点

    2022年7月19日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号