在 OS X 上使用 Qt 4.8.4 -桌面应用程序开发。我需要能够在绘画时检测我是否在 hiDPI 显示器(“视网膜”)上。有谁知道如何实现这一目标?
问问题
3237 次
2 回答
5
您可以QScreen
在 Qt 5 中使用它,在 Qt 4 中您可以使用QSystemDisplayInfo
来自 Qt Mobility 的类。
对于 Qt 4
有QSystemDisplayInfo
- http://doc.qt.digia.com/qtmobility/qsystemdisplayinfo.html
相关方法是getDPIHeight
和getDPIWidth
。
您也可以使用QDesktopWidget
'sphysicalDpiX
和physicalDpiY
方法。
对于 Qt 5
使用QScreen
- http://qt-project.org/doc/qt-5.0/qtgui/qscreen.html#physicalDotsPerInch-prop
((QGuiApplication*)QCoreApplication::instance())
->primaryScreen()->physicalDotsPerInch()
还有physicalDotsPerInchX
和physicalDotsPerInchY
。
于 2013-05-13T17:59:22.133 回答
4
最终,我创建了一个小的可可函数来为我返回这个值。我用它来确定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++ 代码调用此静态函数。
于 2013-05-18T17:24:34.290 回答