QFontInfo :: pixelSize () изменяется между Qt 4 и Qt 5 - PullRequest
0 голосов
/ 30 сентября 2018

Этот код:

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).Что я могу сделать, чтобы получить значения QFontInfo :: pixelSize () для Qt 4 в Qt 5?Я посмотрел на QFontMetrics, но ничего полезного не увидел.

1 Ответ

0 голосов
/ 03 октября 2018

QFont - это запрос шрифта, он не указывает на фактический выбранный шрифт.QFontInfo обеспечивает это.Все, что вы показали, это то, что Qt 5 и Qt 4 используют разные значения DPI в вашей системе, и этого следовало ожидать.Точки являются физической единицей, а пиксели - логической единицей.DPI связывает два.Если вам нужны одинаковые размеры пикселей, почему вы не выбрали желаемый размер пикселя в запросе шрифта (QFont) вместо размера точки?

...