QT之自定义菜单
来源:互联网 发布:歌词 知乎 编辑:程序博客网 时间:2024/05/16 00:50
QT之自定义菜单
- QT之自定义菜单
- 个人建议
- 效果图
- 上代码
- 下代码
- 结尾
个人建议
自定义, 自定义, 自定义, 顾名思义就是我们自己设计出来效果的菜单, 再如果我们把这个自定义的菜单封装成一个类, 你觉得会不会更好呢, 我现在写的菜单类,我提供两个接口供你使用, 在你需要的地方new一个, 根本不需要理会我里面做了什么操作, 一样界面友好的效果, 是不是很爽呢~在这里, 我个人建议就是, 我们在设计界面上, 不要全部往里塞, 而是一个空壳子, 什么都没有, 拆分成各个独立的小模块, 减少冗余的代码,和UI设计
就像这样的界面,往往里面什么都没有,而是一个空壳子。把我需要的模块动态添加。
效果图
这里两张效果图, 一张是我加了样式的菜单, 一张是默认效果菜单
这两种效果图, 我相信你更倾向于自定义样式的效果图吧~(^__^) 我也知道你能看出其中哪张是默认的,哪张是自定义的 O(∩_∩)O, 好了, 废话不多说了, 我们上代码吧~
上代码
首先来看看, 我封装的自定义菜单类, 而你也只需要拥有这个类, 然后便可召唤出自己的菜单出来吧!
CustomMenu::CustomMenu(QWidget *parent) : QMenu(parent){ setAttribute(Qt::WA_TranslucentBackground);}CustomMenu::~CustomMenu(){}void CustomMenu::addCustomMenu(const QString& qsName, const QString& icon, const QString& zhName){ QAction *pAction = addAction(QIcon(icon), zhName); m_menuActionMap.insert(qsName, pAction);}QAction* CustomMenu::getAction(const QString& qsName){ return m_menuActionMap[qsName];}//这里,我只是举例,没添加太多, 而在实际应用中,我们远远不止这些,这可作为你的参考模板,添加属于你自己的菜单封装类.
然后再让我们看看是怎么召唤出菜单类的吧!
void SysTray::onIconActivated(QSystemTrayIcon::ActivationReason reason){ if (reason == QSystemTrayIcon::Trigger) { m_parent->show(); m_parent->activateWindow(); } else if (reason == QSystemTrayIcon::Context) { addSysTrayMenu(); }}void SysTray::addSysTrayMenu(){ CustomMenu* customMenu = new CustomMenu(m_parent); customMenu->addCustomMenu("onBottom", TRAY_ICON_ONDNF, tr("onBottom")); customMenu->addCustomMenu("onMusic", TRAY_ICON_ONMUSIC, tr("onMusic")); customMenu->addCustomMenu("onFire", TRAY_ICON_ONFIRE, tr("onFire")); customMenu->addCustomMenu("onCar", TRAY_ICON_ONCAR, tr("onCar")); customMenu->addCustomMenu("onLol", TRAY_ICON_ONLOL, tr("onLol")); customMenu->addSeparator();//添加分隔线 customMenu->addCustomMenu("onShow", TRAY_ICON, tr("onShow")); customMenu->addSeparator();//t添加分割线 customMenu->addCustomMenu("onQuit", CLOSE_MENU, tr("onQuit")); 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千万别忘记。有NEW就有DELETE嘛(*^__^*),当然了,你可以通过智能指针管理,妈妈就再也不用担心我忘记DELETE啦。}
关于智能指针,可参考C++11智能指针Shared_ptr陷阱
好了,我们的托盘菜单是不是就实现好了,有的小伙伴急了,说到, 你这代码里, 不是没有样式, 你样式怎么弄的?别急,下篇, 我会教大家如何给我们的UI添加漂亮的样式出来。
下代码
关于源码,大家放心,等我把下篇QT之样式讲解完, 我这期的Demo就算讲解完啦, 我就附上这期Demo的工程文件, 当然啦, 免费的,不要你积分 O(∩_∩)O
结尾
只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!
如果你觉得我所写的对你有帮助,默默点个赞哈,你的赞就是我最大的支持,嘿嘿~不要说我骗赞哦,(^__^)
- QT之自定义菜单
- Qt之自定义菜单(按钮菜单)
- Qt之自定义菜单(按钮菜单)
- Qt之自定义菜单(托盘菜单)
- Qt之自定义菜单(右键菜单)
- Qt之自定义菜单(按钮菜单)
- Qt之自定义菜单(右键菜单)
- Qt之自定义菜单(右键菜单)
- Qt---自定义菜单
- qt 自定义菜单
- Qt自定义菜单项
- Qt如何自定义菜单
- QT之二级菜单
- Qt之右键菜单
- QT QButton to QMenu自定义菜单
- 自学QT之托盘菜单
- Qt之右键菜单实现
- qt之菜单的使用
- Git常用命令大全
- SharedPreferences存储 首选项存储
- SDP简介
- 重拾python 三十五
- 在ubuntu16.04LTS下编译linux内核
- QT之自定义菜单
- 《捉迷藏》每个人内心都有一种极端的渴望
- 程序员日记三号——二叉树
- 初中OJ1573. 【提高】下棋
- 今天真是傻,写代码,类声明忘了加分号。。。。然后。。。。。额。。。逗逼
- SSM框架搭建
- poj 1953 c语言 : World Cup Noise
- Python3 常用BIF( Built-in Functions)简介
- CentOS服务器时间同步