SARibbon库使用记录

项目:https://gitee.com/czyt1988/SARibbon

#include <QApplication>
#include <QDebug>
#include <QtWidgets>
#include <QStyle>
#include <QRandomGenerator>
#include "SARibbonBar.h"
#include "SARibbonWidget.h"
#include "SARibbonApplicationButton.h"
#include "SARibbonContextCategory.h"
#include "SARibbonQuickAccessBar.h"
#include "SARibbonButtonGroupWidget.h"
#include "SARibbonMainWindow.h"

QIcon getRandomStyleIcon()
{
	QIcon icon;
	do
	{
		icon = QApplication::style()->standardIcon(static_cast<QStyle::StandardPixmap>(QRandomGenerator::global()->bounded(QStyle::SP_TitleBarMenuButton, QStyle::SP_RestoreDefaultsButton)));
	}while (icon.isNull());
	return icon;
}

SARibbonBar * getABar()
{
	auto ribbonBar = new SARibbonBar;
	ribbonBar->setRibbonStyle(SARibbonBar::RibbonStyleLooseThreeRow);
	ribbonBar->setEnableWordWrap(true);

	auto appButton = new SARibbonApplicationButton(getRandomStyleIcon(),"我是应用按钮");
	ribbonBar->setApplicationButton(appButton);

	auto category01 = new SARibbonCategory("标签页01");
	auto pannel01 = new SARibbonPannel("复制粘贴面板");
	category01->addPannel(pannel01);
	pannel01->addAction(new QAction(getRandomStyleIcon(),"复制"));
	pannel01->addAction(new QAction(getRandomStyleIcon(),"粘贴"));

	auto pannel02 = new SARibbonPannel("撤销回撤面板");
	category01->addPannel(pannel02);
	pannel02->addAction(new QAction(getRandomStyleIcon(),"撤销"));
	pannel02->addAction(new QAction(getRandomStyleIcon(),"回撤"));

	auto category02 = new SARibbonCategory("标签页02");
	auto pannel03 = new SARibbonPannel("撤销回撤面板");
	category02->addPannel(pannel03);
	pannel03->addAction(new QAction(getRandomStyleIcon(),"撤销"));
	pannel03->addAction(new QAction(getRandomStyleIcon(),"回撤"));

	ribbonBar->addCategoryPage(category01);
	ribbonBar->addCategoryPage(category02);

	{
		//SARibbonContextCategory的内容是默认不显示的
		auto contextCategory = new SARibbonContextCategory;
		contextCategory->setContextTitle("上下文标签");
		contextCategory->setContextColor(Qt::red);
		ribbonBar->addContextCategory(contextCategory);//必须先添加到Bar再往上面添加内容才会正确显示

		auto category03 = new SARibbonCategory("标签页03");
		auto pannel04 = new SARibbonPannel("上下文标签上的面板01");
		category03->addPannel(pannel04);
		pannel04->addAction(new QAction(getRandomStyleIcon(),"测试Action01"));
		pannel04->addAction(new QAction(getRandomStyleIcon(),"测试Action02"));
		contextCategory->addCategoryPage(category03);

		auto category04 = new SARibbonCategory("标签页04");
		auto pannel05 = new SARibbonPannel("上下文标签上的面板02");
		category04->addPannel(pannel05);
		pannel05->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
		pannel05->addAction(new QAction(getRandomStyleIcon(),"测试Action04"));
		contextCategory->addCategoryPage(category04);

		ribbonBar->showContextCategory(contextCategory);//让它显示出来
	}

	SARibbonQuickAccessBar* quickAccessBar = ribbonBar->quickAccessBar();
	quickAccessBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	quickAccessBar->addSeparator();
	quickAccessBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	quickAccessBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	quickAccessBar->addSeparator();

	SARibbonButtonGroupWidget* rightBar = ribbonBar->rightButtonGroup();
	rightBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	rightBar->addSeparator();
	rightBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	rightBar->addAction(new QAction(getRandomStyleIcon(),"测试Action03"));
	rightBar->addSeparator();

	return ribbonBar;
}

int main(int argc, char* argv[])
{
	QApplication a(argc, argv);

	SARibbonMainWindow w2;
	w2.setWindowTitle("我是窗口标题");
	w2.setRibbonBar(getABar());
	w2.resize(800,600);
	w2.show();

	auto w = new QWidget;
	auto vb = new QVBoxLayout(w);
	auto font = w->font();
	font.setPixelSize(18);
	w->setFont(font);
	auto hb = new QHBoxLayout;
	hb->addWidget(new QLabel("风格样式:"));
	vb->addLayout(hb);

	QButtonGroup buttonGroup;
	const QMetaObject &mo = SARibbonBar::staticMetaObject;
	QMetaEnum metaEnum = mo.enumerator(mo.indexOfEnumerator("RibbonStyleFlag"));
	for (int i = 0; i < metaEnum.keyCount(); ++i)
	{
		auto btn = new QRadioButton(metaEnum.key(i));
		hb->addWidget(btn);
		buttonGroup.addButton(btn,metaEnum.value(i));
	}
	buttonGroup.button(SARibbonBar::RibbonStyleLoose)->setChecked(true);
	buttonGroup.connect(&buttonGroup,&QButtonGroup::idClicked,[&](int id)
	{
		w2.ribbonBar()->setRibbonStyle(static_cast<SARibbonBar::RibbonStyles>(id));
	});

	hb = new QHBoxLayout;
	hb->addWidget(new QLabel("主题:"));
	vb->addLayout(hb);
	QButtonGroup buttonGroup2;
	QList<std::pair<QString,int>> list;
	list << std::make_pair("RibbonThemeOffice2013",static_cast<int>(SARibbonTheme::RibbonThemeOffice2013));
	list << std::make_pair("office2016-蓝色主题",static_cast<int>(SARibbonTheme::RibbonThemeOffice2016Blue));
	list << std::make_pair("office2021-蓝色主题",static_cast<int>(SARibbonTheme::RibbonThemeOffice2021Blue));
	list << std::make_pair("win7主题",static_cast<int>(SARibbonTheme::RibbonThemeWindows7));
	list << std::make_pair("暗色主题",static_cast<int>(SARibbonTheme::RibbonThemeDark));
	list << std::make_pair("暗色主题2",static_cast<int>(SARibbonTheme::RibbonThemeDark2));

	for(int i = 0;i < list.size();++i)
	{
		auto btn = new QRadioButton(list.at(i).first);
		hb->addWidget(btn);
		buttonGroup2.addButton(btn,list.at(i).second);
	}
	buttonGroup2.button(static_cast<int>(SARibbonTheme::RibbonThemeOffice2013))->setChecked(true);
	buttonGroup2.connect(&buttonGroup2,&QButtonGroup::idClicked,[&](int id)
	{
		w2.setRibbonTheme(static_cast<SARibbonTheme>(id));
	});

	w2.setCentralWidget(w);

	return a.exec();
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<<用:SARibbon是一个为Qt设计的Ribbon风格的UI,它提供了一种现代化和直观的用户界面。SARibbon具有丰富的功能和灵活的配置选项,可以轻松地创建具有Ribbon界面的应用程序。引用:SARibbon提供了多种预定义的Ribbon元素,例如按钮、工具栏、标签等,用户可以通过简单的API调用将这些元素添加到Ribbon中。此外,SARibbon还支持自定义元素,使用户可以根据自己的需求创建特定的Ribbon元素。引用:SARibbon还提供了丰富的主题和样式选项,使用户可以轻松地定制Ribbon界面的外观。用户可以选择不同的颜色、图标和字体来创建自己喜欢的Ribbon主题。引用:SARibbon还提供了丰富的功能,例如上下文标签、快速访问工具栏、键盘快捷键等,使用户可以更高效地使用Ribbon界面。引用:SARibbon是基于Qt的开源项目,用户可以在GitHub上找到它的源代码并进行自定义和扩展。>> SARibbon是一个为Qt设计的Ribbon风格的UI,它提供了一种现代化和直观的用户界面。SARibbon具有丰富的功能和灵活的配置选项,可以轻松地创建具有Ribbon界面的应用程序。SARibbon提供了多种预定义的Ribbon元素,例如按钮、工具栏、标签等,用户可以通过简单的API调用将这些元素添加到Ribbon中。此外,SARibbon还支持自定义元素,使用户可以根据自己的需求创建特定的Ribbon元素。SARibbon还提供了丰富的主题和样式选项,使用户可以轻松地定制Ribbon界面的外观。用户可以选择不同的颜色、图标和字体来创建自己喜欢的Ribbon主题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值