diff --git a/src/SARibbonBar/3rdparty/qwindowkit b/src/SARibbonBar/3rdparty/qwindowkit index 07e9440..1fb3ec7 160000 --- a/src/SARibbonBar/3rdparty/qwindowkit +++ b/src/SARibbonBar/3rdparty/qwindowkit @@ -1 +1 @@ -Subproject commit 07e9440b52d74e2b21b0b1df4bb959b553670452 +Subproject commit 1fb3ec7ef46d80cc536048d1c35905dcbfe24f0f diff --git a/src/SARibbonBar/SARibbonButtonGroupWidget.cpp b/src/SARibbonBar/SARibbonButtonGroupWidget.cpp index ed29539..93c970a 100644 --- a/src/SARibbonBar/SARibbonButtonGroupWidget.cpp +++ b/src/SARibbonBar/SARibbonButtonGroupWidget.cpp @@ -40,8 +40,8 @@ class SARibbonButtonGroupWidget::PrivateData public: QList< SAPrivateRibbonButtonGroupWidgetItem > mItems; ///< 用于记录所有管理的item - int mFixheight; ///内部控件的统一高度 - int mItemMargin; ///间距 + int mFixheight; /// 内部控件的统一高度 + int mItemMargin; /// 间距 }; SARibbonButtonGroupWidget::PrivateData::PrivateData(SARibbonButtonGroupWidget* p) @@ -103,9 +103,7 @@ SARibbonButtonGroupWidget::~SARibbonButtonGroupWidget() } } -QAction* SARibbonButtonGroupWidget::addAction(QAction* a, - Qt::ToolButtonStyle buttonStyle, - QToolButton::ToolButtonPopupMode popMode) +QAction* SARibbonButtonGroupWidget::addAction(QAction* a, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { SARibbonPannel::setActionToolButtonStyleProperty(a, buttonStyle); SARibbonPannel::setActionToolButtonPopupModeProperty(a, popMode); @@ -121,10 +119,7 @@ QAction* SARibbonButtonGroupWidget::addAction(QAction* a, * @param popMode * @return */ -QAction* SARibbonButtonGroupWidget::addAction(const QString& text, - const QIcon& icon, - Qt::ToolButtonStyle buttonStyle, - 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, buttonStyle, popMode); @@ -133,8 +128,8 @@ QAction* SARibbonButtonGroupWidget::addAction(const QString& text, QAction* SARibbonButtonGroupWidget::addMenu(QMenu* menu, Qt::ToolButtonStyle buttonStyle, QToolButton::ToolButtonPopupMode popMode) { - QAction* a = menu->menuAction(); - addAction(a, buttonStyle, popMode); + QAction* a = menu->menuAction(); + addAction(a, buttonStyle, popMode); return (a); } @@ -157,18 +152,18 @@ QAction* SARibbonButtonGroupWidget::addWidget(QWidget* w) return (a); } -SARibbonControlToolButton* SARibbonButtonGroupWidget::actionToRibbonControlToolButton(QAction* action) +SARibbonControlButton* 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); + for (auto obj : qAsConst(children())) { + if (obj->isWidgetType()) { + if (SARibbonControlButton* btn = qobject_cast< SARibbonControlButton* >(obj)) { + if (btn->defaultAction() == action) { + return btn; + } + } + } + } + return (nullptr); } QSize SARibbonButtonGroupWidget::sizeHint() const @@ -181,29 +176,28 @@ QSize SARibbonButtonGroupWidget::minimumSizeHint() const return (layout()->minimumSize()); } - void SARibbonButtonGroupWidget::setItemHeight(int h) { - d_ptr->mFixheight = h; - // 迭代已经保存的button - const QObjectList& objlist = children(); - for (QObject* obj : objlist) { - if (SARibbonControlToolButton* btn = qobject_cast< SARibbonControlToolButton* >(obj)) { - btn->setFixedHeight(h); - btn->setMinimumWidth(h); - } - } + d_ptr->mFixheight = h; + // 迭代已经保存的button + const QObjectList& objlist = children(); + for (QObject* obj : objlist) { + if (SARibbonControlButton* btn = qobject_cast< SARibbonControlButton* >(obj)) { + btn->setFixedHeight(h); + btn->setMinimumWidth(h); + } + } } int SARibbonButtonGroupWidget::itemHeight() const { - return d_ptr->mFixheight; + return d_ptr->mFixheight; } void SARibbonButtonGroupWidget::setItemMargin(int m) { - d_ptr->mItemMargin = m; - layout()->setContentsMargins(0, m, 0, m); + d_ptr->mItemMargin = m; + layout()->setContentsMargins(0, m, 0, m); } int SARibbonButtonGroupWidget::itemMargin() const @@ -232,7 +226,7 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e) if (item.widget != nullptr) { item.widget->setAttribute(Qt::WA_LayoutUsesWidgetRect); item.widget->show(); - //widget高度保持一致 + // widget高度保持一致 item.widget->setFixedHeight(d_ptr->mFixheight); item.customWidget = true; } @@ -242,14 +236,11 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e) } // 不是widget,自动生成ButtonTyle if (!item.widget) { - // 只使用small - SARibbonToolButton::RibbonButtonType buttonType = SARibbonToolButton::SmallButton; - SARibbonControlToolButton* button = RibbonSubElementFactory->createRibbonControlToolButton(this); + SARibbonControlButton* button = RibbonSubElementFactory->createRibbonControlButton(this); button->setAutoRaise(true); button->setFixedHeight(d_ptr->mFixheight); button->setMinimumWidth(d_ptr->mFixheight); button->setFocusPolicy(Qt::NoFocus); - button->setButtonType(buttonType); button->setDefaultAction(item.action); // 属性设置 QToolButton::ToolButtonPopupMode popMode = SARibbonPannel::getActionToolButtonPopupModeProperty(item.action); @@ -258,8 +249,8 @@ void SARibbonButtonGroupWidget::actionEvent(QActionEvent* e) button->setToolButtonStyle(buttonStyle); // 根据QAction的属性设置按钮的大小 - QObject::connect(button, &SARibbonToolButton::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 94f4e55..8a77a28 100644 --- a/src/SARibbonBar/SARibbonButtonGroupWidget.h +++ b/src/SARibbonBar/SARibbonButtonGroupWidget.h @@ -4,7 +4,7 @@ #include #include #include -class SARibbonControlToolButton; +class SARibbonControlButton; /** * @brief 用于管理一组Action,类似于QToolBar */ @@ -17,31 +17,32 @@ class SA_RIBBON_EXPORT SARibbonButtonGroupWidget : public QFrame SARibbonButtonGroupWidget(QWidget* parent = Q_NULLPTR); ~SARibbonButtonGroupWidget() Q_DECL_OVERRIDE; - //生成并添加一个action + // 生成并添加一个action QAction* addAction(QAction* a, - Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, + Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, QToolButton::ToolButtonPopupMode popMode = QToolButton::DelayedPopup); - QAction* addAction(const QString& text, const QIcon& icon, - Qt::ToolButtonStyle buttonStyle = Qt::ToolButtonIconOnly, + 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, + 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); + SARibbonControlButton* actionToRibbonControlToolButton(QAction* action); QSize sizeHint() const Q_DECL_OVERRIDE; QSize minimumSizeHint() const Q_DECL_OVERRIDE; - //设置内部控件高度 + // 设置内部控件高度 void setItemHeight(int h); int itemHeight() const; - //上下margin - void setItemMargin(int m); - int itemMargin() const; + // 上下margin + void setItemMargin(int m); + int itemMargin() const; signals: diff --git a/src/SARibbonBar/SARibbonControlButton.cpp b/src/SARibbonBar/SARibbonControlButton.cpp index 3f06b5c..b51e708 100644 --- a/src/SARibbonBar/SARibbonControlButton.cpp +++ b/src/SARibbonBar/SARibbonControlButton.cpp @@ -1,13 +1,9 @@ #include "SARibbonControlButton.h" - -SARibbonControlButton::SARibbonControlButton(QWidget *parent) - : QToolButton(parent) +SARibbonControlButton::SARibbonControlButton(QWidget* parent) : QToolButton(parent) { } -SARibbonControlToolButton::SARibbonControlToolButton(QWidget *parent) - : SARibbonToolButton(parent) +SARibbonControlToolButton::SARibbonControlToolButton(QWidget* parent) : QToolButton(parent) { - } diff --git a/src/SARibbonBar/SARibbonControlButton.h b/src/SARibbonBar/SARibbonControlButton.h index aeddc0c..bffc80f 100644 --- a/src/SARibbonBar/SARibbonControlButton.h +++ b/src/SARibbonBar/SARibbonControlButton.h @@ -13,7 +13,7 @@ class SA_RIBBON_EXPORT SARibbonControlButton : public QToolButton { Q_OBJECT public: - SARibbonControlButton(QWidget *parent = 0); + SARibbonControlButton(QWidget* parent = 0); }; /** @@ -21,11 +21,11 @@ class SA_RIBBON_EXPORT SARibbonControlButton : public QToolButton * * 为了防止SARibbonToolButton qss的影响,单独继承一个类 */ -class SA_RIBBON_EXPORT SARibbonControlToolButton : public SARibbonToolButton +class SA_RIBBON_EXPORT SARibbonControlToolButton : public QToolButton { - Q_OBJECT + Q_OBJECT public: - SARibbonControlToolButton(QWidget *parent = 0); + SARibbonControlToolButton(QWidget* parent = 0); }; -#endif // SARIBBONPANNELTOOLBUTTON_H +#endif // SARIBBONPANNELTOOLBUTTON_H diff --git a/src/SARibbonBar/SARibbonGallery.cpp b/src/SARibbonBar/SARibbonGallery.cpp index 52d0284..747d01b 100644 --- a/src/SARibbonBar/SARibbonGallery.cpp +++ b/src/SARibbonBar/SARibbonGallery.cpp @@ -21,9 +21,9 @@ class SARibbonGallery::PrivateData SA_RIBBON_DECLARE_PUBLIC(SARibbonGallery) public: static int sGalleryButtonMaximumWidth; - SARibbonControlButton* buttonUp { nullptr }; - SARibbonControlButton* buttonDown { nullptr }; - SARibbonControlButton* buttonMore { nullptr }; + SARibbonGalleryButton* buttonUp { nullptr }; + SARibbonGalleryButton* buttonDown { nullptr }; + SARibbonGalleryButton* buttonMore { nullptr }; #if 0 SARibbonMenu *popupWidget; #else @@ -38,9 +38,9 @@ class SARibbonGallery::PrivateData void init() { - buttonUp = new SARibbonControlButton(q_ptr); - buttonDown = new SARibbonControlButton(q_ptr); - buttonMore = new SARibbonControlButton(q_ptr); + buttonUp = new SARibbonGalleryButton(q_ptr); + buttonDown = new SARibbonGalleryButton(q_ptr); + buttonMore = new SARibbonGalleryButton(q_ptr); buttonUp->setToolButtonStyle(Qt::ToolButtonIconOnly); buttonDown->setToolButtonStyle(Qt::ToolButtonIconOnly); buttonMore->setToolButtonStyle(Qt::ToolButtonIconOnly); @@ -121,6 +121,14 @@ class SARibbonGallery::PrivateData */ int SARibbonGallery::PrivateData::sGalleryButtonMaximumWidth = 15; +//=================================================== +// SARibbonGalleryButton +//=================================================== + +SARibbonGalleryButton::SARibbonGalleryButton(QWidget* parent) : QToolButton(parent) +{ +} + //=================================================== // SARibbonGalleryViewport //=================================================== diff --git a/src/SARibbonBar/SARibbonGallery.h b/src/SARibbonBar/SARibbonGallery.h index dbbea61..1a1fba1 100644 --- a/src/SARibbonBar/SARibbonGallery.h +++ b/src/SARibbonBar/SARibbonGallery.h @@ -2,12 +2,23 @@ #define SARIBBONGALLERY_H #include "SARibbonGlobal.h" #include +#include #include "SARibbonGalleryGroup.h" #include class QLabel; class QVBoxLayout; class SARibbonGalleryViewport; +/** + * @brief 针对SARibbonGallery控件的按钮 + */ +class SA_RIBBON_EXPORT SARibbonGalleryButton : public QToolButton +{ + Q_OBJECT +public: + SARibbonGalleryButton(QWidget* parent = 0); +}; + /** * @brief Gallery控件 * diff --git a/src/SARibbonBar/SARibbonMainWindow.cpp b/src/SARibbonBar/SARibbonMainWindow.cpp index 9d2b22d..909dabb 100644 --- a/src/SARibbonBar/SARibbonMainWindow.cpp +++ b/src/SARibbonBar/SARibbonMainWindow.cpp @@ -279,6 +279,7 @@ SARibbonBar* SARibbonMainWindow::createRibbonBar() void SARibbonMainWindow::resizeEvent(QResizeEvent* event) { + QMainWindow::resizeEvent(event); SARibbonBar* bar = ribbonBar(); SAWindowButtonGroup* wg = d_ptr->mWindowButtonGroup; @@ -290,7 +291,7 @@ void SARibbonMainWindow::resizeEvent(QResizeEvent* event) } } QSize wgSizeHint = wg->sizeHint(); - wg->setGeometry(width() - wgSizeHint.width(), 0, wgSizeHint.width(), wgSizeHint.height()); + wg->setGeometry(frameGeometry().width() - wgSizeHint.width(), 0, wgSizeHint.width(), wgSizeHint.height()); } if (bar) { if (wg) { @@ -300,7 +301,6 @@ void SARibbonMainWindow::resizeEvent(QResizeEvent* event) bar->setFixedWidth(this->size().width()); } } - QMainWindow::resizeEvent(event); } void SARibbonMainWindow::changeEvent(QEvent* e) @@ -334,7 +334,6 @@ void SARibbonMainWindow::onPrimaryScreenChanged(QScreen* screen) } } - void sa_set_ribbon_theme(QWidget* w, SARibbonMainWindow::RibbonTheme theme) { QFile file;