Размер шрифта QMenu для разных точек на дюйм для Windows

#qt #window #dpi #qmenu

Вопрос:

Я попытался завести обычай QWidgetAction . Это прекрасно работает. Однако… в окнах с другим разрешением шрифт в меню меняется неочевидным образом.

  • 100% -> Размер точки = 8
  • 125% -> Размер точки = 9
  • 150% -> Размер точки = 9

(поэтому я не смог подогнать какую-то линейную функцию).

Я просматриваю источники Qt, чтобы найти, где установлен размер шрифта, но пока не повезло (пока).

Может быть, кто-нибудь может указать мне место, где размер шрифта устанавливается в зависимости от DPI? (Чтобы я мог использовать тот же расчет для своего пользовательского виджета.

Спасибо, ребята.

Ответ №1:

Добавить QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); main.cpp и проверьте еще раз, я думаю, это решит вашу проблему.

кроме того, этот документ объясняет это более подробно.

Отредактированный:

Для настройки шрифта QLabel вы можете сделать это двумя способами :

  1. С помощью графического интерфейса можно изменить шрифт всех виджетов в графическом интерфейсе отсюда :

введите описание изображения здесь

  1. создайте QFont объект и добавьте к нему тот же шрифт меню, а затем с помощью функции setFont QLabel добавьте его.
     QFont font;
    font.setPointSize(9);
    label->setFont(font);
 

Размер шрифта по умолчанию для всех виджетов и QMenu в Qt равен 11.

Комментарии:

1. Спасибо, я был удивлен, что он еще не использовался в проекте. Но это, похоже, не решает проблему. Так как мне нужно знать, какой размер шрифта будет использоваться в меню при создании QLabel. Пользовательский виджет в меню имеет, среди прочего, метку QL. Мне нужно, чтобы QLabel имел тот же шрифт, что и меню. Как это сделать?

2. После редактирования: Конечно, это совершенно очевидные вещи. Но как узнать шрифт, который QMenu будет использовать при рисовании (контекстного) меню при динамическом создании QLabel? То, что вы предложили, довольно очевидно и не отвечает на вопрос.

3. поэтому я не понял, чего именно ты хочешь. добавьте свой проект или создайте пример.

4. Я хочу знать, какой размер шрифта QMenu будет использовать до события рисования.

5. Вы должны иметь возможность использовать шрифт, связанный с действием меню QAction::font .