我需要限制自定义小部件setFont()
,使其仅接受等宽字体。
但是,我找不到如何以编程方式定义特定QFont
是否为等宽字体。是否有这样的可能性?
或许 bool QFontInfo::fixedPitch()
函数是您要寻找的:
void MyWidet::setFont ( const QFont& font )
{
QFontInfo fontInfo(font);
if(fontInfo.fixedPitch())
QWidget::setFont(font);
// Otherwise ignore..
}
添加 YourWidget->setStylesheet("QWidget{font: 10pt "Ubuntu";}");
这样,除非您在程序中进行其他更改,否则可以将小部件大小限制为10pt和Ubuntu字体类型。
QFontInfo::fixedPitch()
文档中包含在 see also 部分的QFont::fixedPitch()
,但是QFont
也有setFixedPitch()
方法。也就是说,fixed pitch 可以在字体上进行设置...听起来很奇怪。 - Dmitry SavchenkoQFontInfo
比QFont
更可靠。根据文档,QFont
访问函数返回设置的值,而QFontInfo
对象返回适用于实际用于绘制文本的字体(系统安装的字体)的值。因此,即使您调用font->setFixedPitch(true)
,它也会将该字体与实际的系统字体匹配,然后再进行绘制。 - AmmarQFontInfo
能够可靠地工作,无论是否有人调用了QFont::setFixedPitch(true)
。看起来是这样的。 - Dmitry Savchenko