【发布时间】:2012-06-11 09:15:30
【问题描述】:
我需要限制自定义小部件setFont(),使其仅接受固定宽度的字体。
但是,我找不到如何以编程方式定义特定的 QFont 是否是固定宽度的。有这种可能吗?
【问题讨论】:
我需要限制自定义小部件setFont(),使其仅接受固定宽度的字体。
但是,我找不到如何以编程方式定义特定的 QFont 是否是固定宽度的。有这种可能吗?
【问题讨论】:
也许 bool QFontInfo::fixedPitch() 是您正在寻找的功能:
void MyWidet::setFont ( const QFont& font )
{
QFontInfo fontInfo(font);
if(fontInfo.fixedPitch())
QWidget::setFont(font);
// Otherwise ignore..
}
【讨论】:
QFontInfo::fixedPitch() 文档在 see also 部分包含QFont::fixedPitch(),但QFont 也有setFixedPitch() 方法。也就是说,fixed pitch 可以在字体上set……听起来很奇怪。
QFontInfo 比 QFont 更可靠。根据文档,QFont 访问函数返回设置的值,而QFontInfo 对象返回应用于实际用于绘制文本的字体(系统安装的字体)的值。因此,即使您调用font->setFixedPitch(true),它也会将该字体与实际系统字体匹配,然后进行绘制。
QFontInfo 是可靠的,无论QFont::setFixedPitch(true) 是否被某人调用。好像是这样。
添加YourWidget->setStylesheet("QWidget{font: 10pt "Ubuntu";}");
这样您可以将小部件大小限制为 10pt,字体类型为 Ubuntu,除非您以编程方式在其他地方进行更改。
【讨论】: