QFont.toString() 的格式记录 and/or 在 Qt 版本中是否稳定?
Is the format of QFont.toString() documented and/or stable across Qt versions?
The documentation for QFont.toString
says that it returns "a comma-separated list of the attributes", but it doesn't specify what "the" attributes are or what order they come in. (Edit: the documentation has been updated so it now explicitly lists the attributes and their order.) I found an old question 其回答说属性是:
font family, pointSizeF, pixelSize, QFont::StyleHint
, QFont::Weight
, QFont::Style
, underline, strikeOut, fixedPitch, rawMode
但我找不到此信息的任何权威来源(而且该答案已有 10 多年历史,并且是关于 Qt4 的)。
是否有任何关于 QFont.toString()
格式的明确文档,包括它代表的属性以及它们的顺序?假设保存这样的字符串并稍后在不同版本的 Qt 上将其与 QFont.fromString()
一起使用是否合理?
没有说明哪些属性及其序列化顺序的文档。通常 Qt 不指示 Qt 类 序列化的顺序,因为它们可能会有所不同,但我认为在 QFont 的情况下,它应该建立一个明确的顺序,所以我建议将其报告为错误。因此,了解顺序的唯一方法是检查 the source code:
// 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 类似的方式支持所有格式,因此通常您不必担心。
晚了但是...
在 Qt6 QFont 文档中,方法 toString() 描述了字符串内容:
[https://doc.qt.io/qtforpython/PySide6/QtGui/QFont.html?highlight=qfont#PySide6.QtGui.PySide6.QtGui.QFont.toString]
但是,似乎从 QFontDialog 返回 QFont 时(Python 3.9.4,Qt 6.2.2 via PySide6,OSX Big Sur)在最后一个参数之前提供了 2 个附加参数("字体样式(没有时省略)")
此外,只有 1 个 PointSize 值,PointSizeF 似乎不再可用。
遗憾的是我没有在网上找到最新的资源....
The documentation for QFont.toString
says that it returns "a comma-separated list of the attributes", but it doesn't specify what "the" attributes are or what order they come in. (Edit: the documentation has been updated so it now explicitly lists the attributes and their order.) I found an old question 其回答说属性是:
font family, pointSizeF, pixelSize,
QFont::StyleHint
,QFont::Weight
,QFont::Style
, underline, strikeOut, fixedPitch, rawMode
但我找不到此信息的任何权威来源(而且该答案已有 10 多年历史,并且是关于 Qt4 的)。
是否有任何关于 QFont.toString()
格式的明确文档,包括它代表的属性以及它们的顺序?假设保存这样的字符串并稍后在不同版本的 Qt 上将其与 QFont.fromString()
一起使用是否合理?
没有说明哪些属性及其序列化顺序的文档。通常 Qt 不指示 Qt 类 序列化的顺序,因为它们可能会有所不同,但我认为在 QFont 的情况下,它应该建立一个明确的顺序,所以我建议将其报告为错误。因此,了解顺序的唯一方法是检查 the source code:
// 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 类似的方式支持所有格式,因此通常您不必担心。
晚了但是... 在 Qt6 QFont 文档中,方法 toString() 描述了字符串内容: [https://doc.qt.io/qtforpython/PySide6/QtGui/QFont.html?highlight=qfont#PySide6.QtGui.PySide6.QtGui.QFont.toString]
但是,似乎从 QFontDialog 返回 QFont 时(Python 3.9.4,Qt 6.2.2 via PySide6,OSX Big Sur)在最后一个参数之前提供了 2 个附加参数("字体样式(没有时省略)")
此外,只有 1 个 PointSize 值,PointSizeF 似乎不再可用。
遗憾的是我没有在网上找到最新的资源....