#c #windows #qt #qtwidgets
Вопрос:
В моем приложении Qt 6.2.0 меню усекаются при первоначальном отображении после запуска программы в Windows 10. На Mac проблема еще не возникла.
Это происходит только один раз для каждого меню (один раз для редактирования, один раз для режима и т. Д.), Но не для всех меню. Похоже, это не зависит от размера меню. Это всегда последняя запись, которая будет усечена, и во всех случаях вторая последняя запись является разделителем. Если я выберу меню во второй раз, оно будет полностью отображено:
Если меню перестраиваются в ответ на изменение языка, проблема возникает еще раз для каждого меню.#
Это известная проблема или кто-нибудь еще видел это? Как я могу этого избежать?
Комментарии:
1. В Qt6 они изменили соотношение пикселей устройства в Windows, когда заданное системой увеличение не составляет 100 %. В Qt5 соотношение пикселей на устройстве всегда было 1 в Windows. В Qt6, если у вас задан системный масштаб 150%, то DPR равен 1,5, если у вас 125%, то это 1,25 и т.д. И, как я обнаружил, есть несколько ошибок, связанных с этим изменением. Я ожидал бы, что эти проблемы, которые вы описываете, появятся, когда масштаб больше 100 %. И в этом случае вы можете попробовать поиграть с
https://doc.qt.io/qt-5/qguiapplication.html#setHighDpiScaleFactorRoundingPolicy
ним … Я не говорю, что это решит вашу проблему, но попробовать стоит2. Да — масштабирование не равно 100% на машинах, где это происходит. Я проведу расследование. Спасибо за этот ответ до сих пор.
3. Пожалуйста, потратьте несколько минут и сообщите об этом как об ошибке в Qt bugreports.qt.io Они определенно должны заняться этим в ближайшее время.
4. Я уже разместил это на форуме ( forum.qt.io/topic/131646/… ) но да, я подам отчет об ошибке.
5. Видеть bugreports.qt.io/browse/QTBUG-98347
Ответ №1:
Эта строка устраняет проблему:
QApplication::setStyle(QStyleFactory::create("Windows"));