instAdmin/Cpp/GisDes/SaRibbon/SARibbonBar/SARibbonButtonGroupWidget.h
2024-10-29 22:24:50 +08:00

59 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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