簡體   English   中英

QFontInfo::pixelSize() 在 Qt 4 和 Qt 5 之間變化

[英]QFontInfo::pixelSize() changes between Qt 4 and Qt 5

這段代碼:

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,但沒有看到任何有用的東西。

QFont是一個字體請求,它不表示實際選擇的字體。 QFontInfo提供了這一點。 您所展示的只是 Qt 5 和 Qt 4 在您的系統上使用不同的 DPI 值,這是意料之中的。 點是物理單位,而像素是邏輯單位。 DPI 將兩者聯系起來。 如果您想要相同的像素大小,為什么不在字體請求( QFont )中選擇所需的像素大小,而不是點大小?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM