46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
![]() |
#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
|