此代码:
QFont convertPointToPixelSize( const QFont& f )
{
QFont ret( f );
QFontInfo fi( ret );
ret.setPixelSize( fi.pixelSize() );
return ret;
}
qDebug() << "getFont()=" << getFont();
qDebug() << "convertPointToPixelSize( getFont() )=" << convertPointToPixelSize( getFont());
在Qt 4.8.5上返回:
getFont()= QFont( "MS Shell Dlg 2,36,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "MS Shell Dlg 2,-1,48,5,50,0,0,0,0,0" )
getFont()= QFont( "Arial,28,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "Arial,-1,37,5,50,0,0,0,0,0" )
getFont()= QFont( "Times New Roman,72,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "Times New Roman,-1,96,5,50,0,0,0,0,0" )
在Qt 5.11.1上这样:
getFont()= QFont( "MS Shell Dlg 2,36,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "MS Shell Dlg 2,-1,72,5,50,0,0,0,0,0" )
getFont()= QFont( "Arial,28,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "Arial,-1,56,5,50,0,0,0,0,0" )
getFont()= QFont( "Times New Roman,72,-1,5,50,0,0,0,0,0" )
convertPointToPixelSize( getFont() )= QFont( "Times New Roman,-1,144,5,50,0,0,0,0,0" )
请注意,为相同字体返回的QFontInfo :: pixelSize()值不同。因此QFontInfo :: pixelSize()似乎在Qt 4和Qt 5之间发生了变化(为Qt 5返回更大的值)。我能做些什么来获取Qt 5中Qt 4的QFontInfo :: pixelSize()值?我查看了QFontMetrics,但没有发现任何有用的信息。
答案 0 :(得分:1)
QFont
是一种字体请求,并不表示实际选择的字体。 QFontInfo
提供了这一点。您所显示的只是Qt 5和Qt 4在您的系统上使用了不同的DPI值,这是可以预期的。点是物理单位,而像素是逻辑单位。 DPI将两者链接在一起。如果要使用相同的像素大小,为什么不选择字体请求(QFont
)中所需的像素大小,而不是点大小?