diff --git a/CMakeLists.txt b/CMakeLists.txt index d4d9529..9ee0f5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ project(SARibbon VERSION ${SARIBBON_VERSION} LANGUAGES CXX) # option(BUILD_SHARED_LIBS "build the SARibbonBar in shared lib mode" ON) option(SARIBBON_BUILD_EXAMPLES "build the examples" ON) +option(SARIBBON_USE_FRAMELESS_LIB "use frameless lib" OFF) # load Qt library, minimum version required is 5.8 # cn:Qt库加载,最低版本要求为5.8 @@ -25,20 +26,19 @@ find_package(Qt${QT_VERSION_MAJOR} ${SARIBBON_MIN_QT_VERSION} COMPONENTS ) message(STATUS "current Qt version is Qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}") - # 根据qt版本选择是否使用frameless库,目前frameless库支持qt5.14,qt5.15,qt6.4+,除了上诉版本,都使用不了 if(${QT_VERSION_MAJOR} EQUAL 5) # qt版本为5,判断是否小版本大于14 if(${QT_VERSION_MINOR} GREATER_EQUAL 14) #5.14和5.15可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() elseif(${QT_VERSION_MAJOR} EQUAL 6) # qt版本为6,判断是否小版本大于6.1 if(${QT_VERSION_MINOR} GREATER_EQUAL 1) - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() #6.0及bug多多无法使用frameless set(SARIBBON_USE_FRAMELESS_LIB OFF) diff --git a/src/SARibbonBar/SARibbonButtonGroupWidget.cpp b/src/SARibbonBar/SARibbonButtonGroupWidget.cpp index 4f31d5e..7f27400 100644 --- a/src/SARibbonBar/SARibbonButtonGroupWidget.cpp +++ b/src/SARibbonBar/SARibbonButtonGroupWidget.cpp @@ -9,10 +9,12 @@ #include "SARibbonControlButton.h" #include "SARibbonElementManager.h" #include "SARibbonSeparatorWidget.h" +#include "SARibbonPannel.h" //=================================================== // SAPrivateRibbonButtonGroupWidgetItem //=================================================== + class SAPrivateRibbonButtonGroupWidgetItem { public: @@ -48,9 +50,12 @@ SARibbonButtonGroupWidget::PrivateData::PrivateData(SARibbonButtonGroupWidget* p void SARibbonButtonGroupWidget::PrivateData::init() { QHBoxLayout* layout = new QHBoxLayout(q_ptr); + //上下保留一点间隙 layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); q_ptr->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); + //默认尺寸24 + mIconSize = QSize(24, 24); } //=================================================== @@ -98,8 +103,10 @@ SARibbonButtonGroupWidget::~SARibbonButtonGroupWidget() } } -QAction* SARibbonButtonGroupWidget::addAction(QAction* a) +QAction* SARibbonButtonGroupWidget::addAction(QAction* a, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { + SARibbonPannel::setActionToolButtonStyleProperty(a, buttonStyle); + SARibbonPannel::setActionToolButtonPopupModeProperty(a, popMode); QWidget::addAction(a); return (a); } @@ -112,23 +119,17 @@ QAction* SARibbonButtonGroupWidget::addAction(QAction* a) * @param popMode * @return */ -QAction* SARibbonButtonGroupWidget::addAction(const QString& text, const QIcon& icon, QToolButton::ToolButtonPopupMode popMode) +QAction* SARibbonButtonGroupWidget::addAction(const QString& text, const QIcon& icon, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { QAction* a = new QAction(icon, text, this); - - addAction(a); - ButtonTyle* btn = qobject_cast< ButtonTyle* >(d_ptr->mItems.back().widget); - btn->setPopupMode(popMode); + addAction(a, buttonStyle, popMode); return (a); } -QAction* SARibbonButtonGroupWidget::addMenu(QMenu* menu, QToolButton::ToolButtonPopupMode popMode) +QAction* SARibbonButtonGroupWidget::addMenu(QMenu* menu, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { - QAction* a = menu->menuAction(); - - addAction(a); - ButtonTyle* btn = qobject_cast< ButtonTyle* >(d_ptr->mItems.back().widget); - btn->setPopupMode(popMode); + QAction* a = menu->menuAction(); + addAction(a, buttonStyle, popMode); return (a); } @@ -151,6 +152,20 @@ QAction* SARibbonButtonGroupWidget::addWidget(QWidget* w) return (a); } +SARibbonControlToolButton *SARibbonButtonGroupWidget::actionToRibbonControlToolButton(QAction *action) +{ + for (auto obj : qAsConst(children())) { + if (obj->isWidgetType()) { + if (SARibbonControlToolButton* btn = qobject_cast< SARibbonControlToolButton* >(obj)) { + if (btn->defaultAction() == action) { + return btn; + } + } + } + } + return (nullptr); +} + QSize SARibbonButtonGroupWidget::sizeHint() const { return (layout()->sizeHint()); @@ -171,8 +186,9 @@ void SARibbonButtonGroupWidget::setIconSize(const QSize& s) // 迭代已经保存的button const QObjectList& objlist = children(); for (QObject* obj : objlist) { - if (ButtonTyle* btn = qobject_cast< ButtonTyle* >(obj)) { + if (SARibbonControlToolButton* btn = qobject_cast< SARibbonControlToolButton* >(obj)) { btn->setIconSize(s); + btn->setFixedHeight(s.height()); } } } @@ -203,6 +219,8 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e) if (item.widget != nullptr) { item.widget->setAttribute(Qt::WA_LayoutUsesWidgetRect); item.widget->show(); + //widget高度保持一致 + item.widget->setFixedHeight(d_ptr->mIconSize.height()); item.customWidget = true; } } else if (item.action->isSeparator()) { @@ -212,16 +230,24 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e) } // 不是widget,自动生成ButtonTyle if (!item.widget) { - ButtonTyle* button = RibbonSubElementDelegate->createRibbonControlButton(this); + //只使用small + SARibbonToolButton::RibbonButtonType buttonType = SARibbonToolButton::SmallButton; + SARibbonControlToolButton* button = RibbonSubElementDelegate->createRibbonControlToolButton(this); button->setAutoRaise(true); button->setIconSize(d_ptr->mIconSize); + button->setFixedHeight(d_ptr->mIconSize.height()); button->setFocusPolicy(Qt::NoFocus); - button->setToolButtonStyle(Qt::ToolButtonIconOnly); + button->setButtonType(buttonType); button->setDefaultAction(item.action); + // 属性设置 + QToolButton::ToolButtonPopupMode popMode = SARibbonPannel::getActionToolButtonPopupModeProperty(item.action); + button->setPopupMode(popMode); + Qt::ToolButtonStyle buttonStyle = SARibbonPannel::getActionToolButtonStyleProperty(item.action); + button->setToolButtonStyle(buttonStyle); // 根据QAction的属性设置按钮的大小 - QObject::connect(button, &ButtonTyle::triggered, this, &SARibbonButtonGroupWidget::actionTriggered); - item.widget = button; + QObject::connect(button, &SARibbonToolButton::triggered, this, &SARibbonButtonGroupWidget::actionTriggered); + item.widget = button; } layout()->addWidget(item.widget); d_ptr->mItems.append(item); diff --git a/src/SARibbonBar/SARibbonButtonGroupWidget.h b/src/SARibbonBar/SARibbonButtonGroupWidget.h index 90aa608..96fd7cf 100644 --- a/src/SARibbonBar/SARibbonButtonGroupWidget.h +++ b/src/SARibbonBar/SARibbonButtonGroupWidget.h @@ -4,7 +4,7 @@ #include #include #include -class SARibbonControlButton; +class SARibbonControlToolButton; /** * @brief 用于管理一组Action,类似于QToolBar */ @@ -12,18 +12,26 @@ class SA_RIBBON_EXPORT SARibbonButtonGroupWidget : public QFrame { Q_OBJECT SA_RIBBON_DECLARE_PRIVATE(SARibbonButtonGroupWidget) - using ButtonTyle = SARibbonControlButton; public: SARibbonButtonGroupWidget(QWidget* parent = Q_NULLPTR); ~SARibbonButtonGroupWidget() Q_DECL_OVERRIDE; //生成并添加一个action - QAction* addAction(QAction* a); - QAction* addAction(const QString& text, const QIcon& icon, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup); - QAction* addMenu(QMenu* menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup); + QAction* addAction(QAction* a, + Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, + QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup); + QAction* addAction(const QString& text, const QIcon& icon, + Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, + QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup); + QAction* addMenu(QMenu* menu, + Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, + QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup); QAction* addSeparator(); QAction* addWidget(QWidget* w); + // 从ButtonGroupWidget中把action对应的button提取出来,如果action没有对应的button,就返回nullptr + SARibbonControlToolButton* actionToRibbonControlToolButton(QAction* action); + QSize sizeHint() const Q_DECL_OVERRIDE; QSize minimumSizeHint() const Q_DECL_OVERRIDE; //设置icon尺寸 diff --git a/src/SARibbonBar/SARibbonControlButton.cpp b/src/SARibbonBar/SARibbonControlButton.cpp index 8d55ea3..3f06b5c 100644 --- a/src/SARibbonBar/SARibbonControlButton.cpp +++ b/src/SARibbonBar/SARibbonControlButton.cpp @@ -5,3 +5,9 @@ SARibbonControlButton::SARibbonControlButton(QWidget *parent) : QToolButton(parent) { } + +SARibbonControlToolButton::SARibbonControlToolButton(QWidget *parent) + : SARibbonToolButton(parent) +{ + +} diff --git a/src/SARibbonBar/SARibbonControlButton.h b/src/SARibbonBar/SARibbonControlButton.h index f7bcc51..aeddc0c 100644 --- a/src/SARibbonBar/SARibbonControlButton.h +++ b/src/SARibbonBar/SARibbonControlButton.h @@ -2,10 +2,10 @@ #define SARIBBONCONTROLBUTTON_H #include #include "SARibbonGlobal.h" - +#include "SARibbonToolButton.h" /** - * @brief 用于SARibbonPannel的control button + * @brief 用于SARibbonGallery的control button * * 为了防止外部qss的影响,单独继承一个类 */ @@ -16,4 +16,16 @@ class SA_RIBBON_EXPORT SARibbonControlButton : public QToolButton SARibbonControlButton(QWidget *parent = 0); }; +/** + * @brief 用于SARibbonButtonGroupWidget的control button + * + * 为了防止SARibbonToolButton qss的影响,单独继承一个类 + */ +class SA_RIBBON_EXPORT SARibbonControlToolButton : public SARibbonToolButton +{ + Q_OBJECT +public: + SARibbonControlToolButton(QWidget *parent = 0); +}; + #endif // SARIBBONPANNELTOOLBUTTON_H diff --git a/src/SARibbonBar/SARibbonElementFactory.cpp b/src/SARibbonBar/SARibbonElementFactory.cpp index b4645be..9436d69 100644 --- a/src/SARibbonBar/SARibbonElementFactory.cpp +++ b/src/SARibbonBar/SARibbonElementFactory.cpp @@ -79,6 +79,11 @@ SARibbonControlButton* SARibbonElementFactory::createRibbonControlButton(QWidget return (new SARibbonControlButton(parent)); } +SARibbonControlToolButton *SARibbonElementFactory::createRibbonControlToolButton(QWidget *parent) +{ + return (new SARibbonControlToolButton(parent)); +} + SARibbonStackedWidget* SARibbonElementFactory::createRibbonStackedWidget(SARibbonBar* parent) { return (new SARibbonStackedWidget(parent)); diff --git a/src/SARibbonBar/SARibbonElementFactory.h b/src/SARibbonBar/SARibbonElementFactory.h index 2248eb3..0c1da1b 100644 --- a/src/SARibbonBar/SARibbonElementFactory.h +++ b/src/SARibbonBar/SARibbonElementFactory.h @@ -19,6 +19,7 @@ class SARibbonGallery; class SARibbonGalleryGroup; class SARibbonToolButton; class SARibbonControlButton; +class SARibbonControlToolButton; class SARibbonButtonGroupWidget; class SARibbonStackedWidget; class SARibbonQuickAccessBar; @@ -46,6 +47,7 @@ class SA_RIBBON_EXPORT SARibbonElementFactory virtual SARibbonGalleryGroup* createRibbonGalleryGroup(QWidget* parent); virtual SARibbonToolButton* createRibbonToolButton(QWidget* parent); virtual SARibbonControlButton* createRibbonControlButton(QWidget* parent); + virtual SARibbonControlToolButton* createRibbonControlToolButton(QWidget* parent); virtual SARibbonStackedWidget* createRibbonStackedWidget(SARibbonBar* parent); virtual SARibbonButtonGroupWidget* craeteButtonGroupWidget(QWidget* parent); virtual SARibbonQuickAccessBar* createQuickAccessBar(QWidget* parent); diff --git a/src/SARibbonBar/SARibbonPannel.cpp b/src/SARibbonBar/SARibbonPannel.cpp index 37dc1b9..68e9f7e 100644 --- a/src/SARibbonBar/SARibbonPannel.cpp +++ b/src/SARibbonBar/SARibbonPannel.cpp @@ -163,6 +163,33 @@ QToolButton::ToolButtonPopupMode SARibbonPannel::getActionToolButtonPopupModePro return (QToolButton::InstantPopup); } +/** + * @brief 设置action的ToolButtonStyle属性 + * @param action + * @param buttonStyle + */ +void SARibbonPannel::setActionToolButtonStyleProperty(QAction *action, Qt::ToolButtonStyle buttonStyle) +{ + Q_CHECK_PTR(action); + action->setProperty(SA_ActionPropertyName_ToolButtonStyle, static_cast< int >(buttonStyle)); +} + +/** + * @brief 获取action的ToolButtonStyle属性 + * @param action + * @return + */ +Qt::ToolButtonStyle SARibbonPannel::getActionToolButtonStyleProperty(QAction *action) +{ + bool isok = false; + int r = action->property(SA_ActionPropertyName_ToolButtonStyle).toInt(&isok); + + if (isok) { + return (static_cast< Qt::ToolButtonStyle >(r)); + } + return (Qt::ToolButtonIconOnly); +} + /** * @brief 添加action * diff --git a/src/SARibbonBar/SARibbonPannel.h b/src/SARibbonBar/SARibbonPannel.h index 06de8f8..804fa63 100644 --- a/src/SARibbonBar/SARibbonPannel.h +++ b/src/SARibbonBar/SARibbonPannel.h @@ -176,10 +176,14 @@ class SA_RIBBON_EXPORT SARibbonPannel : public QWidget static void setActionRowProportionProperty(QAction* action, SARibbonPannelItem::RowProportion rp); // 获取action的行属性 static SARibbonPannelItem::RowProportion getActionRowProportionProperty(QAction* action); - // 把action的行属性设置进action中,action自身携带了行属性 + // 把action的PopupMode属性设置进action中,action自身携带了PopupMode属性 static void setActionToolButtonPopupModeProperty(QAction* action, QToolButton::ToolButtonPopupMode popMode); - // 获取action的行属性 + // 获取action的PopupMode属性 static QToolButton::ToolButtonPopupMode getActionToolButtonPopupModeProperty(QAction* action); + // 把action的ToolButtonStyle属性设置进action中,action自身携带了ToolButtonStyle属性 + static void setActionToolButtonStyleProperty(QAction* action, Qt::ToolButtonStyle buttonStyle); + // 获取action的ToolButtonStyle属性 + static Qt::ToolButtonStyle getActionToolButtonStyleProperty(QAction* action); protected: // 设置PannelLayoutMode,此函数设置为protect避免误调用 diff --git a/src/SARibbonBar/SARibbonPannelItem.h b/src/SARibbonBar/SARibbonPannelItem.h index 663b76e..c9da280 100644 --- a/src/SARibbonBar/SARibbonPannelItem.h +++ b/src/SARibbonBar/SARibbonPannelItem.h @@ -42,6 +42,9 @@ class SA_RIBBON_EXPORT SARibbonPannelItem : public QWidgetItem #ifndef SA_ActionPropertyName_ToolButtonPopupMode #define SA_ActionPropertyName_ToolButtonPopupMode "_sa_ToolButtonPopupMode" #endif +#ifndef SA_ActionPropertyName_ToolButtonStyle +#define SA_ActionPropertyName_ToolButtonStyle "_sa_ToolButtonStyle" +#endif #ifndef SA_ActionPropertyName_SeparatorTop #define SA_ActionPropertyName_SeparatorTop "_sa_SeparatorTop" #endif diff --git a/src/SARibbonBar/SARibbonQuickAccessBar.cpp b/src/SARibbonBar/SARibbonQuickAccessBar.cpp index 49358c5..ce75c63 100644 --- a/src/SARibbonBar/SARibbonQuickAccessBar.cpp +++ b/src/SARibbonBar/SARibbonQuickAccessBar.cpp @@ -40,9 +40,9 @@ void SARibbonQuickAccessBar::addSeparator() d_ptr->groupWidget->addSeparator(); } -void SARibbonQuickAccessBar::addAction(QAction* act) +void SARibbonQuickAccessBar::addAction(QAction* act, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { - d_ptr->groupWidget->addAction(act); + d_ptr->groupWidget->addAction(act, buttonStyle, popMode); } void SARibbonQuickAccessBar::addWidget(QWidget* w) @@ -50,9 +50,9 @@ void SARibbonQuickAccessBar::addWidget(QWidget* w) d_ptr->groupWidget->addWidget(w); } -void SARibbonQuickAccessBar::addMenu(QMenu* m, QToolButton::ToolButtonPopupMode popMode) +void SARibbonQuickAccessBar::addMenu(QMenu* m, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { - d_ptr->groupWidget->addMenu(m, popMode); + d_ptr->groupWidget->addMenu(m, buttonStyle, popMode); } /** diff --git a/src/SARibbonBar/SARibbonQuickAccessBar.h b/src/SARibbonBar/SARibbonQuickAccessBar.h index de98dd8..5401b6a 100644 --- a/src/SARibbonBar/SARibbonQuickAccessBar.h +++ b/src/SARibbonBar/SARibbonQuickAccessBar.h @@ -17,9 +17,9 @@ class SA_RIBBON_EXPORT SARibbonQuickAccessBar : public SARibbonCtrlContainer SARibbonQuickAccessBar(QWidget* parent = 0); ~SARibbonQuickAccessBar(); void addSeparator(); - void addAction(QAction* act); + void addAction(QAction* act, Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup); void addWidget(QWidget* w); - void addMenu(QMenu* m, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup); + void addMenu(QMenu* m, Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup); //获取内部管理的ButtonGroupWidget SARibbonButtonGroupWidget* buttonGroupWidget(); const SARibbonButtonGroupWidget* buttonGroupWidget() const; diff --git a/src/SARibbonBar/resource/theme-office2021-blue.qss b/src/SARibbonBar/resource/theme-office2021-blue.qss index cbbca15..486584d 100644 --- a/src/SARibbonBar/resource/theme-office2021-blue.qss +++ b/src/SARibbonBar/resource/theme-office2021-blue.qss @@ -260,6 +260,31 @@ SARibbonToolButton:checked:hover { background-color: #e1e1e1;/* {ToolButton.BKColor:checked} */ } +/*SARibbonControlToolButton*/ + +SARibbonControlToolButton { + background-color: #e5e3e5;/*{ControlButton.BKColor}*/ + color: #333; + border: 0.05em solid #e5e3e5; +} + +SARibbonControlToolButton:pressed { + border: 0.05em solid transparent;/*{ControlButton.BorderColor:pressed}*/ + background-color: #f0f0f0;/*{ControlButton.BKColor:pressed}*/ +} + +SARibbonControlToolButton:checked { + border: 0.05em solid #5f5f5f;/*{ControlButton.BorderColor:checked}*/ + border-radius:0.25em; + background-color: #ebebeb;/*{ControlButton.BKColor:checked}*/ +} + +SARibbonControlToolButton:hover { + border: 0.05em solid #d5d3d5;/*{ControlButton.BorderColor:hover}*/ + color: #e1e1e1;/* {ToolButton.Color:hover} */ + background-color: #f5f6f6;/*{ControlButton.BKColor:hover}*/ +} + /*SARibbonControlButton*/ SARibbonControlButton { @@ -437,12 +462,12 @@ SAWindowToolButton#SAMinimizeWindowButton { qproperty-icon: url(:/image/resource/Titlebar_Min.svg) center; } SAWindowToolButton#SAMinimizeWindowButton:hover,#SAMaximizeWindowButton:hover { - background-color: #e5e5e5; + background-color: #f5f6f6; qproperty-iconSize: 16px 16px; qproperty-icon: url(:/image/resource/Titlebar_Min_Hover.svg) center; } SAWindowToolButton#SAMinimizeWindowButton:pressed,#SAMaximizeWindowButton:pressed { - background-color: #cacacb; + background-color: #f0f0f0; } /*Max*/ SAWindowToolButton#SAMaximizeWindowButton { @@ -453,7 +478,7 @@ SAWindowToolButton#SAMaximizeWindowButton:checked { qproperty-icon: url(:/image/resource/Titlebar_Normal.svg) center; } SAWindowToolButton#SAMaximizeWindowButton:hover { - background-color: #e5e5e5; + background-color: #f5f6f6; qproperty-icon: url(:/image/resource/Titlebar_Max_Hover.svg) center; } diff --git a/src/example/MainWindowExample/CMakeLists.txt b/src/example/MainWindowExample/CMakeLists.txt index b3e574b..c0d2f18 100644 --- a/src/example/MainWindowExample/CMakeLists.txt +++ b/src/example/MainWindowExample/CMakeLists.txt @@ -26,7 +26,7 @@ if(${QT_VERSION_MAJOR} EQUAL 5) # qt版本为5,判断是否小版本大于14 if(${QT_VERSION_MINOR} GREATER_EQUAL 14) #5.14和5.15可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() @@ -34,7 +34,7 @@ elseif(${QT_VERSION_MAJOR} EQUAL 6) # qt版本为6,判断是否小版本大于4 if(${QT_VERSION_MINOR} GREATER_EQUAL 4) #6.4及以上可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() diff --git a/src/example/MainWindowExample/mainwindow.cpp b/src/example/MainWindowExample/mainwindow.cpp index acf7806..2912075 100644 --- a/src/example/MainWindowExample/mainwindow.cpp +++ b/src/example/MainWindowExample/mainwindow.cpp @@ -1232,12 +1232,22 @@ void MainWindow::createQuickAccessBar(SARibbonQuickAccessBar* quickAccessBar) connect(actionRedo, &QAction::triggered, this, [ this ]() { mTextedit->append("redo"); }); quickAccessBar->addSeparator(); - QMenu* m = new QMenu("Presentation File", this); - m->setIcon(QIcon(":/icon/icon/presentationFile.svg")); + + QMenu* m1 = new QMenu("Presentation File 1", this); + m1->setIcon(QIcon(":/icon/icon/presentationFile.svg")); for (int i = 0; i < 10; ++i) { - m->addAction(createAction(QString("file%1").arg(i + 1), ":/icon/icon/file.svg")); + m1->addAction(createAction(QString("file%1").arg(i + 1), ":/icon/icon/file.svg")); } - quickAccessBar->addMenu(m); + quickAccessBar->addMenu(m1, Qt::ToolButtonIconOnly, QToolButton::InstantPopup); + + QMenu* m2 = new QMenu("Presentation File 2", this); + m2->setIcon(QIcon(":/icon/icon/presentationFile.svg")); + for (int i = 0; i < 10; ++i) { + m2->addAction(createAction(QString("file%1").arg(i + 1), ":/icon/icon/file.svg")); + } + QAction* actiontestmenu = new QAction("Presentation File 2"); + actiontestmenu->setMenu(m2); + quickAccessBar->addAction(actiontestmenu, Qt::ToolButtonIconOnly, QToolButton::MenuButtonPopup); QAction* customize = createAction("customize", ":/icon/icon/customize0.svg", "customize2"); quickAccessBar->addAction(customize); @@ -1248,7 +1258,7 @@ void MainWindow::createQuickAccessBar(SARibbonQuickAccessBar* quickAccessBar) connect(actionCustomizeAndSave, &QAction::triggered, this, &MainWindow::onActionCustomizeAndSaveTriggered); // - mSearchEditor = new QLineEdit(this); + mSearchEditor = new SARibbonLineEdit(this); mSearchEditor->setFixedWidth(100); mSearchEditor->setPlaceholderText("Search"); quickAccessBar->addWidget(mSearchEditor); diff --git a/src/example/NormalMenuBarExample/CMakeLists.txt b/src/example/NormalMenuBarExample/CMakeLists.txt index 5c4e999..88ed430 100644 --- a/src/example/NormalMenuBarExample/CMakeLists.txt +++ b/src/example/NormalMenuBarExample/CMakeLists.txt @@ -28,7 +28,7 @@ if(${QT_VERSION_MAJOR} EQUAL 5) # qt版本为5,判断是否小版本大于14 if(${QT_VERSION_MINOR} GREATER_EQUAL 14) #5.14和5.15可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() @@ -36,7 +36,7 @@ elseif(${QT_VERSION_MAJOR} EQUAL 6) # qt版本为6,判断是否小版本大于4 if(${QT_VERSION_MINOR} GREATER_EQUAL 4) #6.4及以上可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() diff --git a/src/example/WidgetWithRibbon/CMakeLists.txt b/src/example/WidgetWithRibbon/CMakeLists.txt index bdfe7f0..563f69e 100644 --- a/src/example/WidgetWithRibbon/CMakeLists.txt +++ b/src/example/WidgetWithRibbon/CMakeLists.txt @@ -28,7 +28,7 @@ if(${QT_VERSION_MAJOR} EQUAL 5) # qt版本为5,判断是否小版本大于14 if(${QT_VERSION_MINOR} GREATER_EQUAL 14) #5.14和5.15可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif() @@ -36,7 +36,7 @@ elseif(${QT_VERSION_MAJOR} EQUAL 6) # qt版本为6,判断是否小版本大于4 if(${QT_VERSION_MINOR} GREATER_EQUAL 4) #6.4及以上可以使用frameless - set(SARIBBON_USE_FRAMELESS_LIB ON) + #set(SARIBBON_USE_FRAMELESS_LIB ON) else() set(SARIBBON_USE_FRAMELESS_LIB OFF) endif()