Я разработал и реализовал приложение на Qt ... Я хотел исправить размер окна, поэтому я совершил ошибку, жестко закодировав места виджетов в окне на всех разных экранах.
Теперь приложение готово, и оно отлично работает на моем экране (или любом экране с разрешением 1920 * 1080) ... но когда я попробовал на экране 4k, окно выглядело крошечным ... более низкое разрешение также делает его большим.
так что вопрос в том ... Как изменить масштаб всего приложения ... окна со всеми кнопками и виджетами на нем в зависимости от плотности пикселей физического экрана без изменения дизайна всех экранов? возможно, рассчитать коэффициент масштабирования в зависимости от разрешения экрана, например:
qreal refDpi = 216.;
qreal refHeight = 1776.;
qreal refWidth = 1080.;
QRect rect = QGuiApplication::primaryScreen()->geometry();
qreal height = qMax(rect.width(), rect.height());
qreal width = qMin(rect.width(), rect.height());
qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch();
m_ratio = qMin(height/refHeight, width/refWidth);
m_ratioFont = qMin(height*refDpi/(dpi*refHeight), width*refDpi/(dpi*refWidth));
и использование setViewport, как указано здесь
painter.setViewport(x, y, width*ScaleFactor, height* ScaleFactor);
, но где это использовать?
Все мои экраны наследуют QWidget ... так что, может быть, я смогу создать новый класс MyQWidget и перегрузить функцию рендеринга, чтобы реализовать изменение масштаба?