Поддержка Retina в Qt5 на OS X

Я пишу графическое приложение на C ++ с использованием Qt 5.5.0 на OS X El Capitan на Retina MacBook Pro. Текст в пикселях по всему приложению, поэтому я подозреваю, что режим высокого разрешения не используется. Мой Info.plist содержит следующее определение:

<key>NSHighResolutionCapable</key>
<true/>

Как включить режим высокого разрешения (особенно для рендеринга текста) в приложении Qt на OS X?

8

Решение

Убедитесь, что ваш info.plist имеет NSPrincipalClass а также NSApplication ключи. Согласно Qt docs, NSHighResolutionCapable является необязательным и истинным по умолчанию. Вот весь мой список для справки:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>@ICON@</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>@TYPEINFO@</string>
<key>CFBundleExecutable</key>
<string>@EXECUTABLE@</string>
<key>CFBundleIdentifier</key>
<string>com.my.@EXECUTABLE@</string>
</dict>
</plist>

Если вы настаиваете на указании NSHighResolutionCapable вручную, обратите внимание, что вы сделали это неправильно в своем вопросе. Вот правильный синтаксис из тех же документов:

<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
3

Другие решения

Вам также нужно позвонить QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps)
только после создания QApplication объект, чтобы иметь возможность использовать растровые изображения с высоким разрешением. Узнайте больше здесь: http://doc.qt.io/qt-5/qpixmap.html#devicePixelRatio

1

По вопросам рекламы [email protected]