|
|
#pragma once
|
|
|
|
|
|
#include "LlUtils_global.h"
|
|
|
#include "Defines.h"
|
|
|
|
|
|
// 关于上标下标的说明
|
|
|
// 主要是单位上标下标,后续可以考虑数值,比如 1e-10d等
|
|
|
// 处理方式:
|
|
|
// (1) 直接在绘图中进行处理,比如坐标轴的刻度(对数坐标里面)
|
|
|
// (2) 改为html代码,增加sub或sup布局方式,QLabel与QTextEdit有些许区别
|
|
|
// (3) 利用UnitCode编码来进行,通常针对数字来进行,个别情况下对字母,注意:需要查表
|
|
|
// 目前整体采用第(3)种方式来进行
|
|
|
class I_UTILSSHARED_EXPORT ZxSupSubHelper
|
|
|
{
|
|
|
public:
|
|
|
|
|
|
ZxSupSubHelper();
|
|
|
~ZxSupSubHelper();
|
|
|
|
|
|
// 对于富文本转换,显示为QLabel和QTextBox是有些区别的,故此处区分一下
|
|
|
// enum RichHtmlMode
|
|
|
// {
|
|
|
// RHM_Label = 0, // 0-QLabel直接调用
|
|
|
// RHM_TextEdit, // 1:QTextEdit直接调用
|
|
|
// RHM_Unknown // 其它(TODO)
|
|
|
// };
|
|
|
|
|
|
/// @brief 检测是否含有需要富文本转换的内容,如果有,则转换
|
|
|
/// @param src 源文本,如 m^3/m^3
|
|
|
/// @param dest 编码结果文本,比如^转为上标
|
|
|
/// @param tag 判断表示,通常是^ 后续支持e
|
|
|
/// @param super 变为上标还是下标,默认上标
|
|
|
/// @param sslen sub/sup 长度,如果为-1则自动按照数字来取,否则,按sslen取
|
|
|
/// @return true:是,且正确转换,false:其他
|
|
|
static bool checkRichText(QString src, QString& dest, \
|
|
|
QString tag = "^", bool super = true, \
|
|
|
int sslen = -1);
|
|
|
|
|
|
/// @brief 把转换后的上下标字符串,再次进行调整,以能够以html的样式显示在QLabel中
|
|
|
/// @param src 源文本,如 m³/d
|
|
|
/// @param dest 目标文本,如 <font>m<sup>3</sup>/d</font>
|
|
|
/// @param super 变为上标还是下标,默认上标
|
|
|
/// @return true:是,且正确转换,false:其他
|
|
|
/// @note 权宜之计的说明,后续有时间再进行优化完善——
|
|
|
// 即:上述上标模式转换,大多数情况下没有问题,但是对于QLabel的显示出了问题,无法正常显示。
|
|
|
// 比如插入流量点对话框中,"10^4m^3/d",m^3可以正确显示,但是^4无法正确显示
|
|
|
// 经测试,应该是转换的码,不支持。(1,2,3,转为的0x00..,而其它转为的是0x20..)
|
|
|
// 但是为了保持整体接口的统一(所有地方都能适用),所以针对QLabel,增加如下接口,以便把转换后的
|
|
|
// 上下标字符串,能够以html的样式显示在QLabel中。
|
|
|
// m³/d 变为:<font>m<sup>3</sup>/d</font>
|
|
|
static bool convertRichText4Label(QString src, QString& dest, \
|
|
|
bool super = true);
|
|
|
|
|
|
private:
|
|
|
|
|
|
// 内部编码查找函数
|
|
|
static QString _getRichCodesOfStrs(QString s, bool super);
|
|
|
static QString _getRichCodeOfChar(QChar ch, bool super);
|
|
|
static QString _getCharOfPossibleRichCode(QChar ch, bool super);
|
|
|
|
|
|
// 目前暂时支持14种字符上下标,后续根据需要可以进行扩展
|
|
|
// ss_ 标识:SupSub
|
|
|
static const int ss_size = 14;
|
|
|
static const int ss_chars[14];
|
|
|
static const int ss_digitsSup[14];
|
|
|
static const int ss_digitsSub[14];
|
|
|
};
|