在OS X上使用Qt 4.8.4 - 桌面应用程序开发。我需要能够在绘画时检测我是否在hiDPI显示器(“视网膜”)上。有谁知道如何实现这个目标?
答案 0 :(得分:4)
您可以在Qt 5中使用QScreen
,在Qt 4中,您可以使用Qt Mobility中的QSystemDisplayInfo
类。
有QSystemDisplayInfo
- http://doc.qt.digia.com/qtmobility/qsystemdisplayinfo.html
相关方法为getDPIHeight
和getDPIWidth
。
您还可以使用QDesktopWidget
的{{1}}和physicalDpiX
方法。
使用physicalDpiY
- http://qt-project.org/doc/qt-5.0/qtgui/qscreen.html#physicalDotsPerInch-prop
QScreen
还有((QGuiApplication*)QCoreApplication::instance())
->primaryScreen()->physicalDotsPerInch()
和physicalDotsPerInchX
。
答案 1 :(得分:4)
最后我刚刚创建了一个小的cocoa函数来为我返回这个值。我用它来确定paintEvent的时间是否应该使用hiDPI图像。像我的MacBook Pro 15“Retina上的魅力一样。
bool MYAppCocoaServices::isHiDPI(QWidget * widget)
{
NSView* view = reinterpret_cast<NSView*>(widget->winId());
CGFloat scaleFactor = 1.0;
if ([[view window] respondsToSelector: @selector(backingScaleFactor)])
scaleFactor = [[view window] backingScaleFactor];
return (scaleFactor > 1.0);
}
我只在Mac上有条件地构建这个.mm文件,并在Mac上用我的c ++代码调用这个静态函数。