• 1385阅读
  • 14回复

QRibbon 菜单栏 [复制链接]

上一主题 下一主题
离线gnibuoz
 

只看楼主 倒序阅读 楼主  发表于: 06-27
— 本帖被 20091001753 从 Qt 作品展 移动到本区(2020-06-27) —
关键词: RIBBON

QRibbon
      Qt 实现的 Ribbon 风格菜单栏,基本思路是定制QTabWidget,通过QSS(样式表)实现显示样式的调整,QRibbon的原则是尽量不侵入正常业务逻辑的开发,所以在开发基于QMainWindow的程序时,可以按照正常的开发流程创建界面,创建普通的菜单栏以及菜单项及其信号槽关联,最后调用QRibbon::install(&mainWindow)函数即可自动创建出与QMainWindow原有QMenuBar相对应的Ribbon...

使用方法
  • 正常创建QMainWindow
  • 为QMainWindow添加菜单和菜单项(建议为所有菜单项都添加合适的图标,这样最终QRibbon就可以直接使用菜单项的图标作为按钮图标)
  • 将QRibbon库相关的所有文件添加至工程
  • 构造完成主界面后,调用如下代码即可实现QRibbon的添加:

                QRibbon::install(&mainWindow);

使用QRibbon::install(window)前后效果对比:




已将代码上传至github,记得fork+star[酷]: https://github.com/gnibuoz/QRibbon

        先上个效果图,后续更详细的实现过程,实现思路主要是重新实现一个QMenuBar 类,然后直接在QMainWindow的上将原有QMenuBar提升为自定义的RibbonBar,并直接从QMainWindow的QMenuBar里边获取菜单内容,自动构建Ribbon栏,这样实现的好处对用户的业务开发流程没有太大的侵入,用户完全可以在QMainWindow界面上实现各种信号/槽关联,事件响应,最后直接将原有的MenuBar提升为实现的类就可以了,后续有空再更新实现过程,整体还是比较简单的,基本是用QTabWidget+QToolButton实现的,期间遇到一些坑,配色什么的直接从word里边截图,然后用PS取得色。


原文链接:https://blog.csdn.net/gnibuoz/article/details/105970328源码放在GitHub上了,喜欢的记得Fork+Star,后面一段时间内应该会持续在GitHub上更新

————————————————
版权声明:本文为CSDN博主「星天阁主」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
12条评分好评度+3贡献值+3金钱+30威望+3
mengkun 好评度 +1 优秀文章,支持!神马都是浮云 07-05
mengkun 贡献值 +1 优秀文章,支持!神马都是浮云 07-05
mengkun 威望 +1 优秀文章,支持!神马都是浮云 07-05
mengkun 金钱 +10 优秀文章,支持!神马都是浮云 07-05
lieber 好评度 +1 - 07-03
lieber 贡献值 +1 - 07-03
lieber 威望 +1 - 07-03
lieber 金钱 +10 - 07-03
20091001753 好评度 +1 - 06-27
20091001753 贡献值 +1 - 06-27
12
我就是我,颜色不一样的烟火...
离线clickto

只看该作者 1楼 发表于: 06-27
先点个赞!
4条评分好评度+1贡献值+1金钱+1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 +1 - 07-04
离线gnibuoz

只看该作者 2楼 发表于: 06-27
回 clickto 的帖子
clickto:先点个赞![表情] [表情] [表情]  (2020-06-27 11:40) 

我就是我,颜色不一样的烟火...
离线lemonzll

只看该作者 3楼 发表于: 06-27
试了下挺好的。建议可以加上项目文件,这样方便测试
4条评分好评度+1贡献值+1金钱+1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 +1 - 07-04
离线gnibuoz

只看该作者 4楼 发表于: 06-27
回 lemonzll 的帖子
lemonzll:[表情] [表情] 试了下挺好的。建议可以加上项目文件,这样方便测试 (2020-06-27 15:26) 

好建议,我回头重新上传下工程文件,后续使用有什么问题可以继续交流
我就是我,颜色不一样的烟火...
离线mengkun

只看该作者 5楼 发表于: 06-28
厉害!!
这个思路真的不走寻常路!
4条评分好评度+1贡献值+1金钱+1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 +1 - 07-04
离线群主大人

只看该作者 6楼 发表于: 06-28
相当牛掰
4条评分好评度+1贡献值+1金钱+1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 +1 - 07-04
离线gnibuoz

只看该作者 7楼 发表于: 06-28
回 mengkun 的帖子
mengkun:厉害!![表情]
这个思路真的不走寻常路! (2020-06-28 08:35) 

哈哈,当时也是为偷懒苦思冥想了许久,不得不说偷懒真是人类进步的阶梯啊,这样实现比较好的就是以前很多项目基本不用怎么改代码就可以直接用上Ribbon了
我就是我,颜色不一样的烟火...
离线gnibuoz

只看该作者 8楼 发表于: 06-28
回 群主大人 的帖子
群主大人:相当牛掰 (2020-06-28 11:00) 

不敢当,能给大家带来一点方便就好
我就是我,颜色不一样的烟火...
离线alone_work

只看该作者 9楼 发表于: 07-02
    
4条评分好评度+1贡献值+1金钱-1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 -1 - 07-04
离线songhuirong1

只看该作者 10楼 发表于: 07-02
这个效果不错
4条评分好评度+1贡献值+1金钱+1威望+1
gnibuoz 好评度 +1 - 07-04
gnibuoz 贡献值 +1 - 07-04
gnibuoz 威望 +1 - 07-04
gnibuoz 金钱 +1 - 07-04
离线libaineu2004

只看该作者 11楼 发表于: 07-19
建议博主,把这个开源项目集成进入:
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
1条评分金钱+1
王四平code 金钱 +1 - 07-27
离线gnibuoz

只看该作者 12楼 发表于: 07-20
回 libaineu2004 的帖子
libaineu2004:建议博主,把这个开源项目集成进入:
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
 (2020-07-19 09:33) 

嗯嗯,最近比较忙,后面有时间了可以规划下
我就是我,颜色不一样的烟火...
离线chamsdoncon

只看该作者 13楼 发表于: 07-21
离线libaineu2004

只看该作者 14楼 发表于: 昨天 16:11
我自己也写了一个,欢迎访问:
https://blog.csdn.net/libaineu2004/article/details/108219125
快速回复
限100 字节
 
上一个 下一个