QFontInfo :: pixelSize()在Qt 4和Qt 5之间变化

时间:2018-09-30 16:44:00

标签: qt qt5 qt4 qfont

此代码:

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,但没有发现任何有用的信息。

1 个答案:

答案 0 :(得分:1)

QFont是一种字体请求,并不表示实际选择的字体。 QFontInfo提供了这一点。您所显示的只是Qt 5和Qt 4在您的系统上使用了不同的DPI值,这是可以预期的。点是物理单位,而像素是逻辑单位。 DPI将两者链接在一起。如果要使用相同的像素大小,为什么不选择字体请求(QFont)中所需的像素大小,而不是点大小?