масштабирование окна и виджета в зависимости от разрешения экрана в Qt - PullRequest
0 голосов
/ 04 августа 2020

Я разработал и реализовал приложение на 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 и перегрузить функцию рендеринга, чтобы реализовать изменение масштаба?

...