Qt功能区:Ribbon控件

发布于:2025-05-22 ⋅ 阅读:(24) ⋅ 点赞:(0)

1. 按钮

1.1 多选按钮

软件功能:用于实现Category的名称居中。
SARibbonCheckBox继承于QCheckBox,使用方法完全相同。

SARibbonCheckBox* checkBox = new SARibbonCheckBox(this);
    checkBox->setText(tr("Alignment Center"));
    checkBox->setObjectName("checkBoxAlignmentCenter");
    checkBox->setWindowTitle(checkBox->text());
    pannelStyle->addSmallWidget(checkBox);
    connect(checkBox, &SARibbonCheckBox::stateChanged, this, [=](int state) {
        if (state == static_cast<int>(Qt::Checked)) {
            ribbonBar()->setRibbonAlignment(SARibbonAlignment::AlignCenter);
        }
        else {
            ribbonBar()->setRibbonAlignment(SARibbonAlignment::AlignLeft);
        }
        });

在这里插入图片描述

1.2

Ribbon中的按钮采用QAction类来实现。

2. 下拉列表框SARibbonComboBox

2.1 简介

实现功能:设置程序窗口的样式
窗口的样式为枚举类型:

enum class SARibbonTheme
{
	RibbonThemeOffice2013,      ///< office2013主题
	RibbonThemeOffice2016Blue,  ///< office2016-蓝色主题
	RibbonThemeOffice2021Blue,  ///< office2021-蓝色主题
	RibbonThemeWindows7,        ///< win7主题
	RibbonThemeDark,            ///< 暗色主题
	RibbonThemeDark2
};

SARibbonComboBox直接继承于QComboBox,并没有添加什么函数
在这里插入图片描述

 * @brief QComboBox的Ribbon显示,可以显示QIcon和windowTitle在左侧
 */
class SA_RIBBON_EXPORT SARibbonComboBox : public QComboBox
{
    Q_OBJECT
public:
    explicit SARibbonComboBox(QWidget *parent = nullptr);
    ~SARibbonComboBox();
};

2.2 代码实现

//设置下拉列表框
    mComboboxRibbonTheme = new SARibbonComboBox();
    mComboboxRibbonTheme->setWindowTitle(tr("RibbonTheme"));
    mComboboxRibbonTheme->setObjectName("RibbonTheme");
    mComboboxRibbonTheme->addItem("Theme Win7", static_cast<int>(SARibbonTheme::RibbonThemeWindows7));
    mComboboxRibbonTheme->addItem("Theme Office2013", static_cast<int>(SARibbonTheme::RibbonThemeOffice2013));
    mComboboxRibbonTheme->addItem("Theme Office2016 Blue", static_cast<int>(SARibbonTheme::RibbonThemeOffice2016Blue));
    mComboboxRibbonTheme->addItem("Theme Office2021 Blue", static_cast<int>(SARibbonTheme::RibbonThemeOffice2021Blue));
    mComboboxRibbonTheme->addItem("Theme Dark", static_cast<int>(SARibbonTheme::RibbonThemeDark));
    mComboboxRibbonTheme->addItem("Theme Dark2", static_cast<int>(SARibbonTheme::RibbonThemeDark2));
    mComboboxRibbonTheme->setCurrentIndex(mComboboxRibbonTheme->findData(static_cast<int>(ribbonTheme())));
    pannelStyle->addSmallWidget(mComboboxRibbonTheme);
    connect(mComboboxRibbonTheme,
        QOverload< int >::of(&SARibbonComboBox::currentIndexChanged),  //信号重载,Overload 是一个模板类,用于显式指定要连接的信号或槽的参数类型,从而消除歧义
        this,
        [=](int index) {
            SARibbonTheme t = static_cast<SARibbonTheme>(index);
            setRibbonTheme(t);
        });

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到