此代码:
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::p ixelSize(( 值。所以QFontInfo::p ixelSize((似乎在Qt 4和Qt 5之间发生了变化(Qt 5返回更大的值(。我能做些什么来获取Qt 5中Qt 4的QFontInfo::p ixelSize((的值?我查看了QFontMetrics,但没有看到任何有用的东西。
QFont
是字体请求,它并不表示实际选择的字体。QFontInfo
提供了这一点。您所看到的只是Qt 5和Qt 4在您的系统上使用不同的DPI值,这是意料之中的。点是一个物理单位,而像素是一个逻辑单位。新闻部将两者联系起来。如果您想要相同的像素大小,为什么不在字体请求中选择所需的像素大小(QFont
(,而不是磅大小?