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

46 lines
1.4 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 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