instAdmin/Cpp/GisDes/SaRibbon/SARibbonBar/SARibbonWidget.h

46 lines
1.4 KiB
C
Raw Normal View History

2024-10-29 22:24:50 +08:00
#ifndef SARIBBONWIDGET_H
#define SARIBBONWIDGET_H
#include "SARibbonGlobal.h"
#include <QWidget>
class SARibbonBar;
class QScreen;
/**
* @brief SARibbonBar的Widget
*
* @note SARibbonWidget利用了布局来把ribbonbar放到最顶部widget添加布局
* setWidget设置进SARibbonWidget
*
*/
class SA_RIBBON_EXPORT SARibbonWidget : public QWidget
{
Q_OBJECT
SA_RIBBON_DECLARE_PRIVATE(SARibbonWidget)
friend class SARibbonBar;
Q_PROPERTY(SARibbonTheme ribbonTheme READ ribbonTheme WRITE setRibbonTheme)
public:
SARibbonWidget(QWidget* parent = nullptr);
~SARibbonWidget() Q_DECL_OVERRIDE;
// 返回SARibbonBar
SARibbonBar* ribbonBar() const;
// 设置ribbonbar
void setRibbonBar(SARibbonBar* bar);
// 注意主题在构造函数设置主题会不完全生效使用QTimer投放到队列最后执行即可
// QTimer::singleShot(0, this, [ this ]() { this->setRibbonTheme(SARibbonTheme::RibbonThemeDark); });
void setRibbonTheme(SARibbonTheme theme);
SARibbonTheme ribbonTheme() const;
// 判断当前是否使用ribbon模式
bool isUseRibbon() const;
// 设置窗口
void setWidget(QWidget* w);
QWidget* widget() const;
//
QWidget* takeWidget();
private Q_SLOTS:
void onPrimaryScreenChanged(QScreen* screen);
};
#endif // SARIBBONWIDGET_H