Qt 6.2: Меню, изначально усеченные в Windows

#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"));