Skip to content

**UNMAINTAINED** Microsoft Ribbon for Qt(本仓库不再持续更新,新版本已集成到 qtcanpool 中)

License

Notifications You must be signed in to change notification settings

canpool/QxRibbon

Repository files navigation

前言

    QxRibbon

QxRibbon 是一款 Microsoft Ribbon for Qt 组件,最初是基于 SARibbon 演变而来,同时,也参考借鉴了 QtitanRibbon、BCGControls 等诸多 ribbon 风格组件的优秀功能/想法。

命名

关于 QxRibbon 名字的由来,先抱怨一下,起名字真是一件伤脑筋的事……

最初,仓库名叫 qtribbon,类名以 QRibbon 作为前缀。是的,大言不惭的参考了 Qt 源代码的命名方式,有一种 Qt 出品的感脚。后来,写着写着,发现能力不行、代码太烂,还是重新起个名字吧。。

于是,以 A-Z 这 26 个字母依次加到 Ribbon 前面看哪个更好看、更有意义,如下一些名字差点入选:

  • CRibbon:C 是 Class 的首字母,符合 Windows C++ 编程风格
  • JRibbon:J 是 Jie 的首字母,但又有点 Jave 的意味
  • KRibbon:K 是 KDE 的自字母,容易被认为是 KDE 出品
  • MRibbon:M 是 Ma,My,Microsoft 的首字母,MyRibbon 可以类比于 MySQL
  • XRibbon:X 代表无限

以上落选还有一点原因就是:体现不出 for Qt

我们知道,Qt 官方不支持 Ribbon 风格(Ribbon UI 风格是微软开创的,具有专利许可协议,许可协议对从构建 UI 的指令到每个按钮间的空格数都做了详细的规定。接受该协议的开发人员,必须同意严格遵循当前和未来的设计指南,并且不能用其开发与 MS Office 直接竞争的产品。据说微软已停用了协议授权,当前在未经授权的情况下,开发和使用 Ribbon 风格控件算不算侵权,存疑。。)

for Qt 像是 Qt + X(X 代表 Qt 没有的)的意思,想到这,那就叫 Q+Ribbon 吧……

好了,+ 肯定不行,那就改乘(x)吧(+旋转45°),于是就叫 QxRibbon,这样以后说不定还能做成一个系列,即 Qt x Others

现状

目前,市面上关于 Ribbon for Qt 的项目,有开源的,也有商用的,数量不在少数,下面罗列一些:

  • QtitanRibbon:一款商用的遵循 Microsoft Ribbon UI 的组件,功能高级
  • SARibbon:一款轻量级的 Ribbon 控件,功能中级
  • fancyribbon:一款精选的 Ribbon 控件,功能初级
  • QtRibbonGUI:一款简单的 Ribbon-UI,功能初级
  • QRibbon:标准 QMenuBar 自动转换为 Ribbon 风格,思路不错,功能初级
  • Qt-Ribbon-Widget:A Ribbon widget for Qt,功能初级
  • TabToolbar:A small library for creating tabbed toolbars,功能初级
  • CbersUI:QT Ribbon Plugin Framework,功能未知
  • qt-ribbon:A ribbon bar implementation for Qt widgets applications,功能未知
  • wribbon:Qt Ribbon library,功能未知
  • stripemenu:Menu tipo cinta basado en Qt ( Ribbon menu Qt-based ),功能未知
  • ribbon:SARibbon 衍生版本
  • ...

微软的 Ribbon 命名空间:System.Windows.Controls.Ribbon

QxRibbon 组件中关键的类名与其它主流的命名区别如下:

QxRibbon QtitanRibbon SARibbon BCGControls
RibbonWindow RibbonMainWindow SARibbonMainWindow N/A
RibbonBar RibbonBar SARibbonBar CBCGPRibbonBar
RibbonPage RibbonPage SARibbonCategory CBCGPRibbonCategory
RibbonGroup RibbonGroup SARibbonPanel CBCGPRibbonPanel
RibbonGallery RibbonGallery SARibbonGallery N/A
RibbonButton RibbonButton SARibbonToolButton CBCGPRibbonButton
RibbonQuickAccessBar RibbonQuickAccessBar SARibbonQuickAccessBar CBCGPRibbonQuickAccessToolbar

备注:

  • RibbonPage: 参考 QTabWidget 的 addTab(QWidget *page, const QString &label),其中第一个参数取名 page

计划

  • 形态:支持 QtWidgets、QtDesinger、QML/QtQuick、PyQt/PySide ...
  • 平台:支持 Windows、MacOS(Quartz)、Linux(X11:GNOME/KDE/Unity/XFCE/LXDE/DDE...,Wayland:GNOME/KDE/Unity...)
  • 构建:支持 qmake、cmake ...
  • ...

具体支持情况:

1)平台支持

平台 Windows MacOS Linux/X11 Linux/Wayland 备注
版本 10 openEuler 23.03/GNOME 43.2
Qt5Widgets
QtDesinger
Qt5Quick
PyQt5 Python 3.9
PySide2

2)构建支持

构建方式 支持 测试版本
qmake
cmake 3.19.2

3)Qt 版本支持

下面提供的支持是经过测试的,未提供的不代表不支持。

Qt4 Qt5 Qt6 Qt7
6.5.1
5.15.2
5.8.0
4.8.6 ×

仓库

教程

协议

  • 遵循 MIT 开源许可协议

规范

贡献

  • 欢迎提交 issue 对关心的问题发起讨论
  • 欢迎 Fork 仓库,pull request 贡献
  • 贡献者可在文件头版权中添加个人信息,格式如下:
/**
 * Copyleft (C) YYYY NAME EMAIL
 * Copyleft (C) 2023 maminjie <[email protected]>
 * SPDX-License-Identifier: MIT
**/

交流

  • QQ群:831617934(Qt业余交流)

演示

  • mainwindow demo(Windows 10)

  • mainwindow demo(openEuler 23.03/X11/GNOME 43.2)

  • mainwindow demo(ubuntu 16.04 LTS/unity 7.4.0)

  • mainwindow demo(Python 3.9/PyQt5)

案例

虚位以待中……

后语

欢迎广大 Qt 开源爱好者加入其中,乐在其中……

About

**UNMAINTAINED** Microsoft Ribbon for Qt(本仓库不再持续更新,新版本已集成到 qtcanpool 中)

Resources

License

Stars

Watchers

Forks

Packages

No packages published