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

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

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

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

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

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

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

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


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


person Horst Walter    schedule 26.02.2016    source источник
comment
Любое решение еще? Я сталкиваюсь с аналогичной проблемой и думаю реализовать то, что было предложено в ответе.   -  person abhiarora    schedule 20.09.2019


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

person Rakeeb Hossain    schedule 26.07.2019
comment
Я планирую добиться этого для своего приложения. Можете ли вы предоставить нам код? У вас есть лучшая альтернатива сейчас? - person abhiarora; 20.09.2019