Qt固定宽度字体

3

我需要限制自定义小部件setFont(),使其仅接受等宽字体。

但是,我找不到如何以编程方式定义特定QFont是否为等宽字体。是否有这样的可能性?

2个回答

3

或许 bool QFontInfo::fixedPitch() 函数是您要寻找的:

void MyWidet::setFont ( const QFont& font )
{
    QFontInfo fontInfo(font);
    if(fontInfo.fixedPitch())
        QWidget::setFont(font);

    // Otherwise ignore..
}

谢谢,Ammar。让我有点困惑的是,QFontInfo::fixedPitch() 文档中包含在 see also 部分的 QFont::fixedPitch(),但是QFont 也有 setFixedPitch() 方法。也就是说,fixed pitch 可以在字体上进行设置...听起来很奇怪。 - Dmitry Savchenko
@DmitrySavchenko:QFontInfoQFont更可靠。根据文档,QFont访问函数返回设置的值,而QFontInfo对象返回适用于实际用于绘制文本的字体(系统安装的字体)的值。因此,即使您调用font->setFixedPitch(true),它也会将该字体与实际的系统字体匹配,然后再进行绘制。 - Ammar
好的,谢谢。我所需要的只是QFontInfo能够可靠地工作,无论是否有人调用了QFont::setFixedPitch(true)。看起来是这样的。 - Dmitry Savchenko

0

添加 YourWidget->setStylesheet("QWidget{font: 10pt "Ubuntu";}");

这样,除非您在程序中进行其他更改,否则可以将小部件大小限制为10pt和Ubuntu字体类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接