当前位置: 首页 > article >正文

Qt Ribbon使用实例

采用SARibbon创建简单的ribbon界面

实例代码如下所示:

1、头文件:

#pragma once


#include <SARibbonBar.h>
#include "SARibbonMainWindow.h"

class QTextEdit;

class SAProjectDemo1 : public SARibbonMainWindow
{
    Q_OBJECT

public:
    SAProjectDemo1(QWidget *parent = Q_NULLPTR);

    QAction* createAction(const QString& text, const QString& iconurl);

    QTextEdit *mTextedit;
};
 

2、源文件

#include "SAProjectDemo1.h"

#include <QTextEdit>
#include <QStatusBar>

SAProjectDemo1::SAProjectDemo1(QWidget *parent)
    : SARibbonMainWindow(parent)
{

    setWindowTitle(("ribbon mainwindow test"));

    setRibbonTheme(SARibbonTheme::RibbonThemeOffice2021Blue);


    SARibbonBar* pRibbonBar = ribbonBar();

    //
    SARibbonCategory* page1 = new SARibbonCategory();
    page1->setCategoryName("page1");
    SARibbonPannel* pannel1 = new SARibbonPannel("pannel1", page1);
    {
        QAction* act = createAction("Demo", ":/SAProjectDemo1/Res/fullscreen.png");
        act->setIconText("save1");
        connect(act, &QAction::triggered, this, [this, act]()
            {
            });
        pannel1->addLargeAction(act);
    }
   
    {
        QAction* act = createAction("Demo", ":/SAProjectDemo1/Res/fullscreen.png");
        act->setIconText("save2");
        connect(act, &QAction::triggered, this, [this, act]()
            {
            });
        pannel1->addLargeAction(act);
    }
    

    {
        QAction* act = createAction("Demo", ":/SAProjectDemo1/Res/fullscreen.png");
        act->setIconText("save3");
        connect(act, &QAction::triggered, this, [this, act]()
            {
            });
        pannel1->addLargeAction(act);
    }
    page1->addPannel(pannel1);

    //
    SARibbonPannel* pannel12 = new SARibbonPannel("pannel12", page1);
    page1->addPannel(pannel12);
    {
        QAction* act = createAction("Demo", ":/SAProjectDemo1/Res/fullscreen.png");
        act->setIconText("save");
        connect(act, &QAction::triggered, this, [this, act]()
            {
            });
        pannel12->addLargeAction(act);
    }
    pRibbonBar->addCategoryPage(page1);

    //
    SARibbonCategory* page2 = new SARibbonCategory();
    page2->setCategoryName("page2");
    SARibbonPannel* pannel2 = new SARibbonPannel("pannel2", page2);
    {
        QAction* act = createAction("Demo", ":/SAProjectDemo1/Res/fullscreen.png");
        act->setIconText("save");
        connect(act, &QAction::triggered, this, [this, act]()
            {
            });
        pannel2->addLargeAction(act);
    }
    page2->addPannel(pannel2);
    pRibbonBar->addCategoryPage(page2);


    mTextedit = new QTextEdit(this);
    setCentralWidget(mTextedit);


    //
    setStatusBar(new QStatusBar());
    resize(800, 600);

}

QAction* SAProjectDemo1::createAction(const QString& text, const QString& iconurl)
{
    QAction* act = new QAction(this);
    act->setText(text);
    act->setIcon(QIcon(iconurl));
    act->setObjectName(text);
    return act;
}


http://www.kler.cn/a/523800.html

相关文章:

  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • Acwing94递归实现排列型枚举
  • SpringBoot统一数据返回格式 统一异常处理
  • 制造企业的成本核算
  • 基于物联网的火灾报警器设计与实现(论文+源码)
  • 穿心莲内酯(andrographolide)生物合成CYP72-文献精读106
  • SSRF漏洞学习总结
  • 【JS逆向】前端加密对抗基础
  • Java定时任务实现方案(四)——Spring Task
  • 卡特兰数学习
  • MFC开发,给对话框添加垂直滚动条并解决鼠标滚动响应的问题
  • vue中的el是指什么
  • 广域网PPP协议
  • Java学习教程,从入门到精通,JDBC插入记录语法及案例(104)
  • LeetCode - #195 Swift 实现打印文件中的第十行
  • 【Pandas】pandas Series cov
  • 使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书
  • 【VUE】Vue2中Vue.extend方法
  • Ikigai是什么
  • MaskGAE论文阅读
  • 基于 RAG 的聊天机器人的追踪、日志和指标:结合 Elastic 的 OpenTelemetry 分发
  • 人物传记之新月篇
  • 一文讲解Java中Object类常用的方法
  • 开源 CSS 框架 Tailwind CSS v4.0
  • LeetCode 0040.组合总和 II:回溯 + 剪枝
  • 正反转电路梯形图