qt - QFont.toString() 的格式是否在 Qt 版本中记录和/或稳定?
问题描述
的文档QFont.toString
说它返回“以逗号分隔的属性列表”,但它没有指定“属性”是什么或它们进入的顺序。 (编辑:文档已更新,因此它现在明确列出属性及其顺序。) 我发现了一个老问题,其答案说属性是:
字体系列, pointSizeF , pixelSize,,,,,下划线,strikeOut
QFont::StyleHint
,fixedPitch,rawModeQFont::Weight
QFont::Style
但是我找不到任何有关此信息的权威来源(而且该答案已有 10 多年的历史,并且与 Qt4 有关)。
是否有任何关于 格式的明确文档QFont.toString()
,包括它代表的属性以及它们的顺序?假设保存这样的字符串并稍后QFont.fromString()
在不同版本的 Qt 上使用它是否可行?
解决方案
没有说明哪些属性以及它们被序列化的顺序的文档。通常,Qt 不会指示 Qt 类的序列化顺序,因为它们可能会有所不同,但我认为在 QFont 的情况下,它应该建立一个明确的顺序,因此我建议将其报告为错误。因此,了解顺序的唯一方法是查看源代码:
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/text/qfont.cpp?h=5.15#n2070
QString QFont::toString() const
{
const QChar comma(QLatin1Char(','));
QString fontDescription = family() + comma +
QString::number( pointSizeF()) + comma +
QString::number( pixelSize()) + comma +
QString::number((int) styleHint()) + comma +
QString::number( weight()) + comma +
QString::number((int) style()) + comma +
QString::number((int) underline()) + comma +
QString::number((int) strikeOut()) + comma +
QString::number((int)fixedPitch()) + comma +
QString::number((int) false);
QString fontStyle = styleName();
if (!fontStyle.isEmpty())
fontDescription += comma + fontStyle;
return fontDescription;
}
我认为,如果格式发生变化,那么 Qt 将实现逻辑,以便以与 QDataStream 类似的方式支持所有格式,因此通常您不必担心。
推荐阅读
- numpy - 导入numpy时DLL加载失败_multiarray_unmath
- c++ - 错误模块名称:ntdll.dll,版本:6.3.9600.19678 异常代码:0xc0000005
- django - Django 3:AttributeError:'AdminSite'对象没有属性'Register'
- typescript - Nestjs如何在没有中间链接的情况下重定向
- scala - 如何根据 spark/scala 中的每个索引位置查找每个值的总和
- kubernetes - 按 apiVersion 列出 Kubernetes 资源
- python-3.x - 从混乱的 .csv 文件中解析/提取表?
- java - 使用 Google Cloud KMS 的 XAdES 签名
- javascript - jQuery从自己切换文本颜色并从其他人删除
- django - 将请求用户添加到 InlineFormSet:TypeError: __init__() got an unexpected keyword argument 'user'