在OS X上的Qt5中支持Retina

时间:2015-12-25 18:54:35

标签: c++ macos qt retina

我在Retina MacBook Pro上的OS X El Capitan上使用Qt 5.5.0编写C ++图形应用程序。文本在整个应用程序中都是像素化的,所以我怀疑没有使用高DPI模式。我的Info.plist包含以下定义:

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

如何在OS X上的Qt应用程序中启用高分辨率模式(尤其是文本渲染)?

2 个答案:

答案 0 :(得分:4)

确保您的info.plist包含NSPrincipalClassNSApplication键。根据{{​​3}},NSHighResolutionCapable是可选的,默认情况下为true。这是我的整个plist供参考:

<?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>

答案 1 :(得分:1)

您还需要致电QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps) 刚创建QApplication对象后才能使用高DPI像素图。在此处阅读更多内容:http://doc.qt.io/qt-5/qpixmap.html#devicePixelRatio