#ifndef SARIBBONSYSTEMBUTTONBAR_H #define SARIBBONSYSTEMBUTTONBAR_H #include "SARibbonGlobal.h" #include #include /** * @brief 窗口的最大最小化按钮 * @note 内部有个SARibbonButtonGroupWidget,其ObjectName = SASystemButtonGroup * 如果需要qss,可以进行特化处理: * * @code * SARibbonButtonGroupWidget#SASystemButtonGroup * @endcode * */ class SA_RIBBON_EXPORT SARibbonSystemButtonBar : public QFrame { Q_OBJECT SA_RIBBON_DECLARE_PRIVATE(SARibbonSystemButtonBar) public: SARibbonSystemButtonBar(QWidget* parent); SARibbonSystemButtonBar(QWidget* parent, Qt::WindowFlags flags); ~SARibbonSystemButtonBar(); void setupMinimizeButton(bool on); void setupMaximizeButton(bool on); void setupCloseButton(bool on); // 以最顶层的widget的WindowFlag作为WindowFlag void updateWindowFlag(); void updateWindowFlag(Qt::WindowFlags flags); // 设置按钮的宽度比例,最终按钮宽度将按照此比例进行设置 void setButtonWidthStretch(int close = 4, int max = 3, int min = 3); // 标题栏高度 void setWindowTitleHeight(int h); int windowTitleHeight() const; // 设置标准系统按钮的宽度 void setWindowButtonWidth(int w); int windowButtonWidth() const; // 设置Qt::WindowStates void setWindowStates(Qt::WindowStates s); // 仅获取按钮的状态 Qt::WindowFlags windowButtonFlags() const; // 三个标准系统窗口按钮 QAbstractButton* minimizeButton() const; QAbstractButton* maximizeButton() const; QAbstractButton* closeButton() const; // 图标尺寸 void setIconSize(const QSize& ic); QSize iconSize() const; // 生成并添加一个action 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); virtual QSize sizeHint() const Q_DECL_OVERRIDE; protected: virtual void resizeEvent(QResizeEvent* e) Q_DECL_OVERRIDE; protected slots: Q_SLOT void closeWindow(); Q_SLOT void minimizeWindow(); Q_SLOT void maximizeWindow(); }; /** * @brief The SARibbonSystemToolButton class */ class SARibbonSystemToolButton : public QToolButton { Q_OBJECT public: SARibbonSystemToolButton(QWidget* p = nullptr); }; #endif // SARIBBONSYSTEMBUTTONBAR_H