qt - QFont.toString() 的格式是否在 Qt 版本中有记录和/或稳定?

标签 qt fonts qfont

The documentation for QFont.toString 说它返回“属性的逗号分隔列表”,但它没有指定“the”属性是什么或它们的顺序。(编辑:文档已更新,因此它现在明确列出了属性及其顺序。) 我找到了 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 类似的方式支持所有格式,因此通常您不必担心。

关于qt - QFont.toString() 的格式是否在 Qt 版本中有记录和/或稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64002615/

相关文章:

c++ - 从库 (DLL) 函数访问 ui 指针

qt - CMake CPack debian 软件包

swift - 使用 Swift 将自定义字体添加到 macOS 应用程序

python - 如何更改QMenu字体大小

python - 为什么 QFontDialog.getFont() 总是返回相同的字体?

c++ - TreeView 中的分层数据和 TreeView 更新技术

c++ - Qt5右上角QMenuBar中如何设置按钮?

java - 更改 BlueJ/Java 中的 system.out 字体和颜色

css - 自动将字体颜色与背景进行对比