没有说明哪些属性以及它们被序列化的顺序的文档。通常,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 类似的方式支持所有格式,因此通常您不必担心。