Может ли QFontMetrics учитывать масштабирование точек на дюйм?

У меня сложилось впечатление, что если вы сделаете это в вашем приложении

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication* app = new QApplication(temp, NULL);

затем шрифты автоматически масштабируются на дисплее с высоким разрешением. То же самое, если вы явно увеличите масштабирование шрифта в Windows 10 (Настройки -> Система -> Пользовательское масштабирование).

Однако при запуске следующего кода со 100%, а затем 200% масштабированием в Windows 10 он не возвращает удвоенный размер.

QFont font = QFont("arial", 10);
QFontMetrics fm(font);
int width = fm.width("abcdefgABCDEFG");

Странно, разница только в 1 пиксель.

100% --> width = 108 pixels
200% --> width = 109 pixels

Это почему? Могу ли я получить QFontMetrics для учета масштабирования Windows? Или мне нужно использовать логический / физический DPI, чтобы определить, что размер шрифта должен быть увеличен в 2 раза?

Спасибо

1 ответ

Решение

Для правильного масштабирования нарисованных пользователем элементов используйте свойство QScreen:: PhysicalDotPerInch, чтобы реализовать коэффициент масштабирования, применяемый к реальным чертежам:

qreal myScale = pScreen->physicalDotPerInch() / constStandardPerInch;

PS Вопрос еще нужно пересмотреть.

Другие вопросы по тегам