首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测hiDPI模式

检测hiDPI模式
EN

Stack Overflow用户
提问于 2013-05-13 17:42:42
回答 2查看 3.3K关注 0票数 6

在OS上使用QT4.8.4 -- 桌面应用程序开发。我需要能够检测,在油漆时间,如果我在一个hiDPI显示器(“视网膜”)或不。有人知道如何做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-18 17:24:34

最后,我创建了一个小可可函数来为我返回这个值。我使用它来确定paintEvent的时间是否应该使用hiDPI图像。在我的MacBook Pro 15“Retina上很有魅力。

代码语言:javascript
复制
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++代码调用这个静态函数。

票数 4
EN

Stack Overflow用户

发布于 2013-05-13 17:59:22

您可以在Qt5中使用QScreen,在Qt4中可以使用Mobility中的QSystemDisplayInfo类。

Qt 4

QSystemDisplayInfo - http://doc.qt.digia.com/qtmobility/qsystemdisplayinfo.html

相关的方法有getDPIHeightgetDPIWidth

您还可以使用QDesktopWidgetphysicalDpiXphysicalDpiY方法。

Qt 5

使用QScreen - http://qt-project.org/doc/qt-5.0/qtgui/qscreen.html#physicalDotsPerInch-prop

代码语言:javascript
复制
((QGuiApplication*)QCoreApplication::instance())
    ->primaryScreen()->physicalDotsPerInch()

还有physicalDotsPerInchXphysicalDotsPerInchY

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16527971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档