在OS上使用QT4.8.4 -- 桌面应用程序开发。我需要能够检测,在油漆时间,如果我在一个hiDPI显示器(“视网膜”)或不。有人知道如何做到这一点吗?
发布于 2013-05-18 17:24:34
最后,我创建了一个小可可函数来为我返回这个值。我使用它来确定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-13 17:59:22
您可以在Qt5中使用QScreen,在Qt4中可以使用Mobility中的QSystemDisplayInfo类。
Qt 4
有QSystemDisplayInfo - http://doc.qt.digia.com/qtmobility/qsystemdisplayinfo.html
相关的方法有getDPIHeight和getDPIWidth。
您还可以使用QDesktopWidget的physicalDpiX和physicalDpiY方法。
Qt 5
使用QScreen - http://qt-project.org/doc/qt-5.0/qtgui/qscreen.html#physicalDotsPerInch-prop
((QGuiApplication*)QCoreApplication::instance())
->primaryScreen()->physicalDotsPerInch()还有physicalDotsPerInchX和physicalDotsPerInchY。
https://stackoverflow.com/questions/16527971
复制相似问题