查看完整版本: [-- QRibbon 菜单栏 --]

QTCN开发网 -> Qt代码秀 -> QRibbon 菜单栏 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

gnibuoz 2020-06-27 11:32

QRibbon 菜单栏


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

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

                QRibbon::install(&mainWindow);

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

[attachment=21697]

[attachment=21696]


已将代码上传至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版权协议,转载请附上原文出处链接及本声明。

clickto 2020-06-27 11:40
先点个赞!

gnibuoz 2020-06-27 11:51
clickto:先点个赞![表情] [表情] [表情]  (2020-06-27 11:40) 


lemonzll 2020-06-27 15:26
试了下挺好的。建议可以加上项目文件,这样方便测试

gnibuoz 2020-06-27 18:11
lemonzll:[表情] [表情] 试了下挺好的。建议可以加上项目文件,这样方便测试 (2020-06-27 15:26) 

好建议,我回头重新上传下工程文件,后续使用有什么问题可以继续交流

mengkun 2020-06-28 08:35
厉害!!
这个思路真的不走寻常路!

群主大人 2020-06-28 11:00
相当牛掰

gnibuoz 2020-06-28 15:43
mengkun:厉害!![表情]
这个思路真的不走寻常路! (2020-06-28 08:35) 

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

gnibuoz 2020-06-28 15:43
群主大人:相当牛掰 (2020-06-28 11:00) 

不敢当,能给大家带来一点方便就好

alone_work 2020-07-02 08:25
    

songhuirong1 2020-07-02 18:11
这个效果不错

libaineu2004 2020-07-19 09:33
建议博主,把这个开源项目集成进入:
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System

gnibuoz 2020-07-20 21:24
libaineu2004:建议博主,把这个开源项目集成进入:
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
 (2020-07-19 09:33) 

嗯嗯,最近比较忙,后面有时间了可以规划下

chamsdoncon 2020-07-21 09:29

libaineu2004 2020-09-21 16:11
我自己也写了一个,欢迎访问:
https://blog.csdn.net/libaineu2004/article/details/108219125

wushuang443 2020-09-27 14:27
不错不错是拖控件搞的吗?还是写代码写出来的?

gnibuoz 2020-11-20 17:15
wushuang443:不错不错是拖控件搞的吗?还是写代码写出来的? (2020-09-27 14:27) 

有UI,也有代码

bigma 2020-11-23 20:21
思路不错,但是代码就。。。
我最近也在写fancyribbon,借鉴借鉴

greyfyus 2020-12-18 11:40

rpdhunter 2020-12-18 16:49
非常不错的思路,准备在下个项目中借鉴,多谢楼主!

f12x45q56 2020-12-19 14:05
这个真的是个好帖,感谢楼主的分享

lwfchat 2021-07-01 22:07
    

gnibuoz 2021-07-23 15:48
rpdhunter:非常不错的思路,准备在下个项目中借鉴,多谢楼主! (2020-12-18 16:49) 


深圳陈奕迅 2021-07-30 09:41
  

gnibuoz 2021-09-14 11:04
深圳陈奕迅:[表情]  [表情]  (2021-07-30 09:41) 


gnibuoz 2021-09-14 11:04
lwfchat:[表情]  [表情]  [表情]  (2021-07-01 22:07) 


gnibuoz 2021-09-14 11:04
f12x45q56:这个真的是个好帖,感谢楼主的分享 (2020-12-19 14:05) 


309771096 2021-11-26 09:33
为什么这个插件会影响到QComboBox啊,QComboBox下拉箭头啥也看不到了,完全跟QLineEdit一样

xliuzz 2022-03-17 16:45

zoubing 2022-03-19 14:16
309771096:为什么这个插件会影响到QComboBox啊,QComboBox下拉箭头啥也看不到了,完全跟QLineEdit一样 (2021-11-26 09:33) 

这个应该跟Qt的BUG有关系哈,QComboBox在全屏应用下一直有这个BUG,可以去Qt的BUG列表中搜索下,解决方案是修改全屏显示的代码,不要调用MainWindow的全屏函数,直接获取显示器大小,并setGeometry实现

zoubing 2023-08-02 08:56

ch781609892 2023-10-06 15:56

shokokawaii 2023-10-22 09:23


查看完整版本: [-- QRibbon 菜单栏 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled