QtCanpool 3.3.0
载入中...
搜索中...
未找到
ribbonstyleoption.cpp
浏览该文件的文档.
1
5#include "ribbonstyleoption.h"
6#include "ribbongrouplayout.h"
7#include <QApplication>
8#include <QDebug>
9
11
12class RibbonStyleOptionPrivate
13{
14 QX_DECLARE_PUBLIC(RibbonStyleOption)
15public:
16 RibbonStyleOptionPrivate();
17
18 int baseHeight();
19 int groupOtherHeight();
20 void calc(int baseHeight);
21public:
22 int m_baseHeight = 17;
23 int m_tabBarHeight;
24 int m_titleBarHeight;
25 int m_ribbonBarHeightOfficeStyleThreeRow;
26 int m_ribbonBarHeightWpsLiteStyleThreeRow;
27 int m_ribbonBarHeightOfficeStyleTwoRow;
28 int m_ribbonBarHeightWpsLiteStyleTwoRow;
29};
30
31RibbonStyleOptionPrivate::RibbonStyleOptionPrivate()
32{
33 calc(baseHeight());
34}
35
36int RibbonStyleOptionPrivate::baseHeight()
37{
38#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
39 int s = QApplication::fontMetrics().lineSpacing();
40#else
41 int s = QFontMetricsF(QApplication::font()).lineSpacing();
42#endif
43 return s;
44}
45
46int RibbonStyleOptionPrivate::groupOtherHeight()
47{
48 int h = RibbonGroupLayout::groupContentsMargins().top() + RibbonGroupLayout::groupContentsMargins().bottom();
49 if (RibbonGroup::titleVisible()) {
50 return h + RibbonGroup::groupTitleHeight();
51 }
52 return h;
53}
54
55void RibbonStyleOptionPrivate::calc(int baseHeight)
56{
57 m_baseHeight = baseHeight;
58
59 m_titleBarHeight = m_baseHeight * 1.65;
60 m_tabBarHeight = m_baseHeight * 1.5;
61
62 m_ribbonBarHeightOfficeStyleThreeRow = m_titleBarHeight + m_tabBarHeight + m_tabBarHeight * 3 + groupOtherHeight();
63 m_ribbonBarHeightWpsLiteStyleThreeRow = m_ribbonBarHeightOfficeStyleThreeRow - m_tabBarHeight;
64 m_ribbonBarHeightOfficeStyleTwoRow = m_ribbonBarHeightOfficeStyleThreeRow - m_tabBarHeight;
65 m_ribbonBarHeightWpsLiteStyleTwoRow = m_ribbonBarHeightOfficeStyleThreeRow - m_tabBarHeight - m_tabBarHeight;
66}
67
68RibbonStyleOption::RibbonStyleOption()
69{
71}
72
73RibbonStyleOption::~RibbonStyleOption()
74{
76}
77
78int RibbonStyleOption::ribbonBarHeight(RibbonBar::RibbonStyle s) const
79{
80 Q_D(const RibbonStyleOption);
81 switch (s) {
82 case RibbonBar::OfficeStyle:
83 return d->m_ribbonBarHeightOfficeStyleThreeRow;
84 case RibbonBar::WpsLiteStyle:
85 return d->m_ribbonBarHeightWpsLiteStyleThreeRow;
86 case RibbonBar::OfficeStyleTwoRow:
87 return d->m_ribbonBarHeightOfficeStyleTwoRow;
88 case RibbonBar::WpsLiteStyleTwoRow:
89 return d->m_ribbonBarHeightWpsLiteStyleTwoRow;
90 default:
91 break;
92 }
93 return d->m_ribbonBarHeightOfficeStyleThreeRow;
94}
95
96int RibbonStyleOption::titleBarHeight() const
97{
98 Q_D(const RibbonStyleOption);
99 return d->m_titleBarHeight;
100}
101
102int RibbonStyleOption::tabBarHeight() const
103{
104 Q_D(const RibbonStyleOption);
105 return d->m_tabBarHeight;
106}
107
108void RibbonStyleOption::recalc()
109{
111 d->calc(d->baseHeight());
112}
113
114QDebug operator<<(QDebug debug, const RibbonStyleOption &c)
115{
116 QDebugStateSaver saver(debug);
117 Q_UNUSED(saver);
118#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
119 int lineSpacing = QApplication::fontMetrics().lineSpacing();
120#else
121 int lineSpacing = QFontMetricsF(QApplication::font()).lineSpacing();
122#endif
123 debug.nospace() << "fontMetrics.lineSpacing=" << lineSpacing
124 << ",RibbonStyleOption(titleBarHeight=" << c.titleBarHeight()
125 << ",tabBarHeight=" << c.tabBarHeight()
126 << "\n,ribbonBarHeight(OfficeStyle)=" << c.ribbonBarHeight(RibbonBar::OfficeStyle)
127 << "\n,ribbonBarHeight(OfficeStyleTwoRow)=" << c.ribbonBarHeight(RibbonBar::OfficeStyleTwoRow)
128 << "\n,ribbonBarHeight(WpsLiteStyle)=" << c.ribbonBarHeight(RibbonBar::WpsLiteStyle)
129 << "\n,ribbonBarHeight(WpsLiteStyleTwoRow)=" << c.ribbonBarHeight(RibbonBar::WpsLiteStyleTwoRow);
130 return debug;
131}
132
定义了 ribbon 所有尺寸相关信息,ribbon 的建立都基于此类的尺寸,如果想调整, 可以通过 RibbonFactory (通过 RibbonManager 单例管理) 的 RibbonFact...
virtual int titleBarHeight() const
virtual int ribbonBarHeight(RibbonBar::RibbonStyle s) const
QDebug operator<<(QDebug debug, const RibbonStyleOption &c)
#define QX_INIT_PRIVATE(Class)
#define QX_DECLARE_PUBLIC(Class)
#define QX_FINI_PRIVATE()
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE