Поддержка таблиц стилей / Qt Designer для экранов с высоким разрешением?

Сегодня я перенес свое приложение с Qt5.5 на Qt5.6RC. Запустив его на моем экране с высоким dpi, виджеты выглядели крошечными. После прочтения и настройки QT_AUTO_SCREEN_SCALE_FACTOR to "1" по крайней мере, это снова можно использовать.

Однако они говорят:

В более долгосрочной перспективе приложение должно быть адаптировано для запуска без изменений:

1) Всегда используйте qreal версии API рисования QPainter.
2) Размер окон и диалогов по отношению к размеру экрана.
3) Замените жестко запрограммированные размеры в макетах и ​​коде чертежа на значения, рассчитанные по метрикам шрифта или размеру экрана.

Не все атрибуты таблицы стилей поддерживают em (".. из метрики шрифта"). Не знаю, как бы я использовал относительный размер экрана в таблицах стилей. Также Qt Designer поддерживает только px во многих местах, как показано ниже.

размер значка

Учитывая, что я не хочу отказываться от дизайнера и таблиц стилей, какие у меня есть варианты для создания настоящих приложений Qt Hires?


Связано (но нет ответа на мой вопрос)

1 ответ

Если вы действительно хотите использовать Дизайнер, возможно, подумайте о программном обновлении таблиц стилей. Это действительно хитрое исправление, которое я реализовал в приложении, которое мне пришлось развернуть на нескольких платформах. Это означало бы использоватьpx измерения для всего, поскольку это единственное широко поддерживаемое измерение.

Как вы, возможно, знаете, шрифты Qt не поддерживают относительный размер экрана. em единицы измерения:

Из документации Qt5: https://doc.qt.io/qt-5/stylesheet-reference.html Qt ограничен размерами шрифта в pt и px, а любой другой размер должен быть в px, em или ex.

Какой бы монитор и его характеристики вы ни разработали, пользовательский интерфейс, которым вы довольны, станет стандартом для вашего приложения. В конструкторе окон вы можете рассчитать коэффициент масштабирования как отношение DPI нового устройства к "стандартному DPI", на котором, как вы знаете, ваше приложение выглядит хорошо. Оттуда вам просто нужно будет умножить ваши таблицы стилей виджетов / шрифтов на этот коэффициент масштабирования. Это может показаться громоздким (и это определенно так), но это будет означать итерацию QString, возвращаемую ui->myWidget->getStyleSheet(), и масштабирование всех экземпляров чисел, предшествующихpx подстрока.

Это сработало для меня при увеличении / уменьшении размеров шрифтов и виджетов, но с явно добавленными накладными расходами. Мне тоже очень нравится простота использования Designer, но, кстати, создание масштабируемого пользовательского интерфейса в Designer остается сложным. Переключение на программное проектирование пользовательского интерфейса привело к замене моего хакерского исправления для моего приложения.

Примечание. Также важно следить за тем, какие шрифты вы используете. Если ваш шрифт не поддерживается системой,px value будет иметь неожиданное поведение, поскольку его заменит шрифт по умолчанию.

Не уверен, что это поможет, так как я никогда не использовал конструктор для своих приложений qt, но я думаю, что в какой-то момент вы будете вынуждены работать как некоторые веб-сайты и иметь несколько выделенных файлов qss в зависимости от вашего разрешения экрана.

Я думаю, что это довольно легко сделать в CSS3, не уверен, что поддерживается в qss. Я нашел этот пост, объясняющий, как получить разрешение экрана основного дисплея: QT получает разрешение экрана без расширенного монитора

Для вопроса "1em", даже если вы не установили размер шрифта, он будет выбран по умолчанию, поэтому я думаю, что 1em означает 100% размера шрифта по умолчанию.

С уважением.

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