DtkCore
DTK Core module
|
抽象格式化工具基类 更多...
#include <include/util/dabstractunitformatter.h>
Public 成员函数 | |
DAbstractUnitFormatter () | |
空参构造函数 | |
qreal | formatAs (qreal value, int currentUnit, const int targetUnit) const |
格式化数值到指定单位 | |
QPair< qreal, int > | format (const qreal value, const int unit) const |
格式化数值到合适的单位 | |
QList< QPair< qreal, int > > | formatAsUnitList (const qreal value, int unit) const |
包括完整转换数据版本的format() | |
Protected 成员函数 | |
virtual int | unitMax () const =0 |
获取最大的单位id | |
virtual int | unitMin () const =0 |
获取最小的单位id | |
virtual uint | unitConvertRate (int unitId) const =0 |
获取当前单位到下一高级单位的进率 | |
virtual qreal | unitValueMax (int unitId) const |
获取当前单位的最大值 | |
virtual qreal | unitValueMin (int unitId) const |
获取当前单位的最小值 | |
virtual QString | unitStr (int unitId) const =0 |
获取当前单位的字符串表示 | |
抽象格式化工具基类
DAbstractUnitFormatter提供统一的单位格式化接口. 在DAbstractUnitFormatter的设计理念中, 不同大小的单位被编号成不同级别的单位id.
id从小到大, 单位从低级到高级. 各相邻单位之间的进率可以是不均匀的, 实现者只需实现unitConvertRate, 返回当前单位到下一高级单位(从id为x的单位到id为x+1的单位)的进率是正确的.
事实上, 实现者如果保证unitConvertRate对于任一id为x的单位, 其到id为x+1的单位的换算比率(允许小于1)是正确的, 不需满足id递增, 单位级别递增的约束(即unitConvertRate总是大于1的约束)
注意, 实现者此时需重写其他接口以同时保证正确性.
DAbstractUnitFormatter::DAbstractUnitFormatter | ( | ) |
空参构造函数
QPair< qreal, int > DAbstractUnitFormatter::format | ( | const qreal | value, |
const int | unit | ||
) | const |
格式化数值到合适的单位
[in] | value | 当前单位下表示的数值 |
[in] | unit | 当前单位 |
合适是指: 如果单位大于unitMin()或者小于unitMax(), 会尽量保证值被转换到接近最小值的合适单位上.
qreal DAbstractUnitFormatter::formatAs | ( | qreal | value, |
int | currentUnit, | ||
const int | targetUnit | ||
) | const |
格式化数值到指定单位
[in] | value | 当前单位下表示的数值 |
[in] | currentUnit | 当前单位id |
[in] | targetUnit | 目标单位id |
QList< QPair< qreal, int > > DAbstractUnitFormatter::formatAsUnitList | ( | const qreal | value, |
int | unit | ||
) | const |
包括完整转换数据版本的format()
[in] | value | 当前单位下表示的数值 |
[in] | unit | 当前单位 |
|
protectedpure virtual |
获取当前单位到下一高级单位的进率
[in] | unitId | 当前单位id |
在 Dtk::Core::DDiskSizeFormatter , 以及 Dtk::Core::DTimeUnitFormatter 内被实现.
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
获取当前单位的字符串表示
[in] | unitId | 当前单位id |
在 Dtk::Core::DDiskSizeFormatter , 以及 Dtk::Core::DTimeUnitFormatter 内被实现.
|
inlineprotectedvirtual |
获取当前单位的最大值
[in] | unitId | 当前单位id |
|
inlineprotectedvirtual |
获取当前单位的最小值
[in] | unitId | 当前单位id |