在Qt中使用QFont设置字体样式

在Qt中使用QFont设置字体样式的步骤如下:

1. 创建QFont对象

QFont font;

2. 设置字体属性

  • 字体家族:使用setFamily()方法,建议提供备选字体。

    font.setFamily("Arial, sans-serif"); // 备选通用字体
    
  • 字体大小

    • 点大小(考虑DPI):
      font.setPointSize(12);
      
    • 像素大小(固定值):
      font.setPixelSize(16);
      
  • 字体粗细

    font.setBold(true); // 粗体
    // 或使用Weight枚举(Qt 5.5+)
    font.setWeight(QFont::Bold); // 等效于setBold(true)
    
  • 斜体

    font.setItalic(true);
    
  • 装饰线

    font.setUnderline(true);   // 下划线
    font.setStrikeOut(true);   // 删除线
    
  • 字符间距与拉伸

    font.setLetterSpacing(QFont::AbsoluteSpacing, 2.0); // 绝对间距2像素
    font.setStretch(150); // 水平拉伸150%
    

3. 应用字体到控件

QLabel *label = new QLabel("Hello World");
label->setFont(font);

4. 检查字体可用性(可选)

使用QFontDatabase确保字体存在:

QFontDatabase fontDB;
QStringList availableFonts = fontDB.families();

if (availableFonts.contains("Arial")) {
    font.setFamily("Arial");
} else {
    font.setFamily("sans-serif"); // 回退到通用字体
}

5. 通过构造函数快速设置

QFont font("Arial", 12, QFont::Bold, true); // 参数:家族、点大小、粗细、斜体

示例代码

创建带样式的字体并应用到按钮:

QPushButton *button = new QPushButton("Click Me");
QFont font;
font.setFamily("Arial");
font.setPointSize(12);
font.setBold(true);
font.setItalic(true);
font.setUnderline(true);
button->setFont(font);

注意事项

  • 跨平台兼容性:优先选择系统通用字体(如sans-serifserif)。
  • 样式表(QSS):可通过CSS设置字体,适合静态样式:
    button->setStyleSheet("font: bold 12pt Arial; font-style: italic; text-decoration: underline;");
    
  • 性能:频繁修改字体可能影响性能,建议复用QFont对象。

你可能感兴趣的:(Qt,样式表,qt,开发语言)