Может ли 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 Вопрос еще нужно пересмотреть.