1、准备工作
1.1、下载 SARibbon 并解压
https://gitee.com/czyt1988/SARibbonhttps://gitee.com/czyt1988/SARibbon
1.2、创建自己的工程项目 SiftTest
1.2.1、工程文件目录
1.2.2、运行结果
2、引入SARibbon
2.1、创建SARibbon目录
在自己的工程目录中创建SARibbon目录
2.2、复制SARibbon代码
从SARibbon 工程的SARibbon-master/src目录中复制文件到自己工程的SARibbon目中
SARibbon.h、SARibbon.cpp、SARibbon.pri三个文件和SARibbonBar目录
2.3、在工程文件中添加引用
include($$PWD/SARibbon/SARibbon.pri)
2.4、引用 SARibbon.h
#include "SARibbon.h"
2.5、修改父类
把QMainWindow
替换为SARibbonMainWindow
,SARibbonMainWindow
修改了QMainWindow
对menubar的渲染方式
2.6、界面变这样啦
3、创建菜单
3.1、高分屏设置
在main.cpp的main函数中添加高分屏设置代码
int main(int argc, char *argv[])
{
//SARibbonBar的高分屏设置 点赞
SARibbonBar::initHighDpi();
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
3.2、设置icon
在函数中添加 setWindowIcon(QIcon(":/img/logo.png"));
MainWindow::MainWindow(QWidget *parent)
: SARibbonMainWindow(parent)
, ui(new Ui::MainWindow)
{
setWindowIcon(QIcon(":/img/logo.png"));
ui->setupUi(this);
}
3.3、ApplicationButton
ribbon界面左上角有个特殊且明显的按钮,称之为applicationButton
,这个按钮一般用于调出菜单,SARibbonBar在构造时默认就创建了applicationButton
,可以通过如下方式设置其文字:
SARibbonBar* bar = ribbonBar();
bar->applicationButton()->setText(tr(" File "));
3.4、添加标签页
//标签创建方式一
SARibbonCategory* categoryMain = bar->addCategoryPage(tr("&Main"));
categoryMain->setObjectName(("categoryMain"));
//! cn: SARibbonBar的Category和Pannel,以及对应的Action都应该设置ObjectName,因为如果要自定义action,这些ObjectName是必不可少的
//标签创建方式二
//! 先创建SARibbonCategory指针,
//! 并通过SARibbonBar::addCategoryPage函数把SARibbonCategory指针传递给SARibbonBar
SARibbonCategory* categoryOther = new SARibbonCategory();
categoryOther->setCategoryName(tr("Other"));
categoryOther->setObjectName(("categoryOther"));
bar->addCategoryPage(categoryOther);
3.5、添加面板
给Main标签页添加了两个面板
SARibbonPannel* pannel1 = categoryMain->addPannel(tr("主菜单"));
SARibbonPannel* pannel2 = categoryMain->addPannel(tr("其它"));
3.6、添加菜单
给主菜单面板添加几个菜单
pannel1->addAction(tr("设置"), QIcon(":/img/setting.png")
, QToolButton::InstantPopup);
pannel1->addAction(tr("开始"), QIcon(":/img/start.png")
, QToolButton::InstantPopup);
pannel1->addAction(tr("历史数据"), QIcon(":/img/data.png")
, QToolButton::InstantPopup);
pannel1->addAction(tr("小图标菜单1"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Small);
pannel1->addAction(tr("小图标菜单2"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Small);
pannel1->addAction(tr("小图标菜单3"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Small);
pannel1->addAction(tr("小图标菜单4"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Medium);
pannel1->addAction(tr("小图标菜单5"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Medium);
pannel1->addAction(tr("小图标菜单6"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Medium);
pannel1->addAction(tr("小图标菜单7"), QIcon(":/img/logo.png")
, QToolButton::InstantPopup, SARibbonPannelItem::Medium);
3.7、设置主题
// 在构造函数设置主题会不完全生效
QTimer::singleShot(0, this, [ this ]() {
this->setRibbonTheme(SARibbonMainWindow::RibbonThemeOffice2016Blue);
});