SimpleWindow
载入中...
搜索中...
未找到
GridLayout.h
1#pragma once
2
3#include "LayoutHost.h"
4#include "ObservableCollection.h"
5
6namespace sw
7{
37
46
50 struct GridRow {
52 GridRCType type = GridRCType::FillRemain;
53
55 double height = 1;
56
58 GridRow() = default;
59
61 GridRow(double height);
62
64 GridRow(GridRCType type, double height);
65 };
66
70 struct FixSizeGridRow : public GridRow {
72 FixSizeGridRow(double height);
73 };
74
78 struct AutoSizeGridRow : public GridRow {
81 };
82
86 struct FillRemainGridRow : public GridRow {
88 FillRemainGridRow(double proportion = 1);
89 };
90
94 struct GridColumn {
96 GridRCType type = GridRCType::FillRemain;
97
99 double width = 1;
100
102 GridColumn() = default;
103
105 GridColumn(double width);
106
108 GridColumn(GridRCType type, double width);
109 };
110
116 FixSizeGridColumn(double width);
117 };
118
126
132 FillRemainGridColumn(double proportion = 1);
133 };
134
138 class GridLayout : public LayoutHost
139 {
140 private:
144 struct _ChildInfo {
145 ILayout *instance;
146 GridLayoutTag layoutTag;
147 GridRCType rowMeasureType;
148 GridRCType colMeasureType;
149 };
150
154 struct _RowInfo {
155 GridRow row;
156 double size = 0;
157 double proportion = 0;
158 };
159
163 struct _ColInfo {
164 GridColumn col;
165 double size = 0;
166 double proportion = 0;
167 };
168
172 struct {
173 std::vector<_RowInfo> rowsInfo;
174 std::vector<_ColInfo> colsInfo;
175 std::vector<_ChildInfo> childrenInfo;
176 std::vector<Rect> cells;
177 } _internalData;
178
179 public:
184
189
195 virtual Size MeasureOverride(const Size &availableSize) override;
196
201 virtual void ArrangeOverride(const Size &finalSize) override;
202
203 private:
207 void _UpdateInternalData();
208
212 Rect &_GetCell(int row, int col);
213 };
214}
网格布局方式
Definition GridLayout.h:139
ObservableCollection< GridRow > rows
行定义
Definition GridLayout.h:183
virtual void ArrangeOverride(const Size &finalSize) override
安排子元素的位置,可重写该函数以实现自定义布局
ObservableCollection< GridColumn > columns
列定义
Definition GridLayout.h:188
std::vector< _ColInfo > colsInfo
列信息
Definition GridLayout.h:174
std::vector< Rect > cells
保存格信息
Definition GridLayout.h:176
std::vector< _RowInfo > rowsInfo
行信息
Definition GridLayout.h:173
virtual Size MeasureOverride(const Size &availableSize) override
测量元素所需尺寸,无需考虑边框和边距
std::vector< _ChildInfo > childrenInfo
子元素信息
Definition GridLayout.h:175
布局接口
Definition ILayout.h:13
值转换器接口
Definition IValueConverter.h:14
用于托管元素的布局方式的对象类型,是所有布局方式类型的基类
Definition LayoutHost.h:11
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
GridRCType
GridRow和GridColumn的类型
Definition GridLayout.h:41
@ FixSize
固定大小
@ FillRemain
填充剩余空间
@ AutoSize
调整BmpBox大小,使其等于所包含位图的大小
自动宽度的列
Definition GridLayout.h:122
AutoSizeGridColumn()
初始化AutoSizeGridColumn
自动高度的行
Definition GridLayout.h:78
AutoSizeGridRow()
初始化AutoSizeGridRow
填充剩余宽度的列
Definition GridLayout.h:130
FillRemainGridColumn(double proportion=1)
初始化FillRemainGridColumn
填充剩余高度的行
Definition GridLayout.h:86
FillRemainGridRow(double proportion=1)
初始化FillRemainGridRow
固定宽度的列
Definition GridLayout.h:114
FixSizeGridColumn(double width)
初始化FixSizeGridColumn
固定高度的行
Definition GridLayout.h:70
FixSizeGridRow(double height)
初始化FixSizeGridRow
网格中的列信息
Definition GridLayout.h:94
GridColumn(double width)
固定大小的列
GridColumn(GridRCType type, double width)
初始化GridColumn
GridColumn()=default
创建一个FillRemain的GridColumn
网格布局方式的布局标记
Definition GridLayout.h:11
GridLayoutTag(uint16_t row, uint16_t column, uint16_t rowSpan=1, uint16_t columnSpan=1)
初始化GridLayoutTag
uint16_t rowSpan
所跨行数
Definition GridLayout.h:19
uint16_t row
所在行
Definition GridLayout.h:13
uint16_t column
所在列
Definition GridLayout.h:16
uint16_t columnSpan
所跨列数
Definition GridLayout.h:22
GridLayoutTag(uint64_t layoutTag)
从LayoutTag创建
GridLayoutTag()=default
GridLayoutTag默认值
网格中的行信息
Definition GridLayout.h:50
GridRow(GridRCType type, double height)
初始化GridRow
GridRow(double height)
固定大小的行
GridRow()=default
创建一个FillRemain的GridRow
表示一个矩形区域
Definition Rect.h:17
尺寸
Definition Size.h:15