我正在使用OS X El Capitan上的Qt 5.5.0在Retina MacBook Pro上編寫C++圖形應用程序。文本在整個應用程序中都是像素化的,所以我懷疑沒有使用高DPI模式。我的Info.plist包含以下定義:在OS X的Qt5上支持Retina
<key>NSHighResolutionCapable</key>
<true/>
我如何在OS X中的Qt應用程序啓用高分辨率模式(特別是文本渲染)?
我正在使用OS X El Capitan上的Qt 5.5.0在Retina MacBook Pro上編寫C++圖形應用程序。文本在整個應用程序中都是像素化的,所以我懷疑沒有使用高DPI模式。我的Info.plist包含以下定義:在OS X的Qt5上支持Retina
<key>NSHighResolutionCapable</key>
<true/>
我如何在OS X中的Qt應用程序啓用高分辨率模式(特別是文本渲染)?
確保您的info.plist有NSPrincipalClass
和NSApplication
鍵。根據Qt docs,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>@[email protected]</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>@[email protected]</string>
<key>CFBundleExecutable</key>
<string>@[email protected]</string>
<key>CFBundleIdentifier</key>
<string>[email protected]@</string>
</dict>
</plist>
如果你堅持要手動指定NSHighResolutionCapable
,請注意,你做錯了你的問題。下面是來自同一個文檔正確的語法:
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
我試過你的plist並手動正確指定'NSHighResolutionCapable',但它仍然模糊/像素化。 – SurvivalMachine
經過多次測試後,您的答案實際上是正確的。我的運行目錄包含.plist的舊副本。手動設置'NSHighResolutionCapable'不是必需的。 – SurvivalMachine
@SurvivalMachine:除非你需要,否則我相信你可以完全拋棄plist。如果沒有它,也應該工作。 –
你也只需要創建QApplication
目的是能夠使用高DPI像素圖後致電QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps)
。 Read more here:http://doc.qt.io/qt-5/qpixmap.html#devicePixelRatio
Qt Widgets or QML? –
我的Qt Widgets應用程序在視網膜上完美無瑕,我的.plist中沒有該鍵。事實上,我沒有特別的鑰匙。剛剛檢查。 –
我使用Qt小部件。 – SurvivalMachine