Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面好看。
![5f364317371fcc9adb18e660d26ad454.png](https://i-blog.csdnimg.cn/blog_migrate/e17cce00ed68035ea8ba6e9aad9011d4.jpeg)
如何实现呢?
可以注意到的是:类别由面板组成,面板由按钮或文本编辑框或进度条等控件组成
按钮都是有图片和文字组成,按钮通过按钮集合可以产生类似于下拉菜单的作用
观察这些按钮,可以发现有两类:小图标的按钮和大图标的按钮
小图标:像素16×16,32位
大图标:像素32×32,32位
关键问题是如何制作这些BitMap以及如何将他们加载到Ribbon界面中。
下面介绍两种方法实现如上功能:
01
1. 制作工具栏BitMap
在网上找了IconWorkshop这个软件,可以制作icon图标,也可以用多个icon图标制作位图BitMap。这正是我想要的功能
自己不会美工,所以在网上找了些素材,做了以下一个工具栏样的32×32像素32位的BitMap
![8e6760b75f74fb5f77e01e864e113d6f.png](https://i-blog.csdnimg.cn/blog_migrate/0f2bc805ffc0aea65dea2f66486888e5.jpeg)
2.修改Ribbon内的按钮图标
首先,修改类别属性,Large Images和Small Images,Large Images就是大图标,Small Images是小图标。在Large Images中的下拉菜单中选择IDB_BIG。
然后修改面板中的按钮属性,在Large Images属性选项中选择一个合适的图标即可
小图标也是一样的道理,修改各自Small Images属性即可
3.实现下拉菜单
按钮属性中有个行为的属性,在里面添加相应的菜单(或间隔符)即完成了类似下拉菜单;还有一些快捷方式的按键也可以设置它们的功能项。做出来的界面如下所示:
![015887d46f000b87ff3c9b9bb304c136.png](https://i-blog.csdnimg.cn/blog_migrate/fe7c4a9c4e7410a67d7777180ed77371.jpeg)
4.将按钮ID和菜单上的ID匹配
Ribbon中的菜单ID是不能自己设置的,必须绑定在某个菜单上,对菜单的事件响应就是对响应的Ribbon上按钮的响应,所以按了Ribbon界面上的某个按钮就等同于按钮对应的某个菜单
5.修改最小化工具栏上的图标
上图虽然修改了左上角的按钮图标,但是电脑工具栏上还是现实的MFC图标,使用下面代码进行修改
C++代码:
HICON m_hIcon;m_hIcon = AfxGetApp()->LoadIcon(IDI_HAHA);SetIcon(m_hIcon, TRUE); // Set small icon//SetIcon(m_hIcon, FALSE); // Set big icon
02
在平时练习的时候我们可以自己手动进行,但是一旦接受一些项目,应用程序开发等,对界面的要求就会高出许多。这时候就有必要借助这些“半成品”实现界面美化提升效率。
QtitanRibbon:
QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。(点击查看详情)
主流的Office风格,助你提高产品受欢迎度
全面跨平台,加速项目交付,易于后期维护
与Qt Designer深度集成,适用任何Qt商业项目开发
Toolkit Pro:
是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件。(点击查看详情)
往期精选
1.QtitanRibbon:完整的Ribbon组件,为你提供现代化办公界面解决方案
2.QtitanRibbon:完整的Ribbon组件,为你提供现代化办公界面解决方案
3.外企开发者:Toolkit Pro让我们轻松交付高质量的现代GUI,专注于功能构建
4.SpreadJS v14.0:全面强化可视化插件,只需“拖拉拽”就能让数据“立”起来
5.慧都17周年庆 软件正版化交付我们放价又送礼