59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
#ifndef SARIBBONBUTTONGROUPWIDGET_H
|
||
#define SARIBBONBUTTONGROUPWIDGET_H
|
||
#include "SARibbonGlobal.h"
|
||
#include <QToolButton>
|
||
#include <QMenu>
|
||
#include <QFrame>
|
||
class SARibbonControlButton;
|
||
/**
|
||
* @brief 用于管理一组Action,类似于QToolBar
|
||
*/
|
||
class SA_RIBBON_EXPORT SARibbonButtonGroupWidget : public QFrame
|
||
{
|
||
Q_OBJECT
|
||
SA_RIBBON_DECLARE_PRIVATE(SARibbonButtonGroupWidget)
|
||
public:
|
||
using FpButtonIterate = std::function< bool(SARibbonControlButton*) >;
|
||
|
||
public:
|
||
SARibbonButtonGroupWidget(QWidget* parent = Q_NULLPTR);
|
||
~SARibbonButtonGroupWidget() Q_DECL_OVERRIDE;
|
||
|
||
// 图标尺寸
|
||
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);
|
||
// 从ButtonGroupWidget中把action对应的button提取出来,如果action没有对应的button,就返回nullptr
|
||
SARibbonControlButton* actionToRibbonControlToolButton(QAction* action);
|
||
|
||
QSize sizeHint() const Q_DECL_OVERRIDE;
|
||
QSize minimumSizeHint() const Q_DECL_OVERRIDE;
|
||
|
||
public:
|
||
bool iterate(FpButtonIterate fp);
|
||
Q_SIGNALS:
|
||
|
||
/**
|
||
* @brief 参考QToolBar::actionTriggered的信号
|
||
* @param action
|
||
*/
|
||
void actionTriggered(QAction* action);
|
||
|
||
protected:
|
||
virtual void actionEvent(QActionEvent* e) Q_DECL_OVERRIDE;
|
||
};
|
||
|
||
#endif // SARIBBONBUTTONGROUPWIDGET_H
|