【发布时间】:2012-01-25 13:39:10
【问题描述】:
我在 Qt 工作,我需要帮助来获取屏幕(显示器)的物理尺寸,
在 Qt 中,可以从QApplication 获得QDesktopWidget,我的意思是:
QDesktopWidget *mydesk = QApplication::desktop();
QDesktopwidget 有一些方法可以获取以像素为单位的分辨率,还有一些方法可以获取以 milimethers 为单位的大小:
mydesk-> widthMM(); mydesk->heightMM();
但是这和物理尺寸不对应,我用尺子测量我的屏幕时,还是有相当大的差异。
还可以获取 DPI 测量值并计算屏幕尺寸:
mydesk->physicalDpiX(); mydesk->physicalDpiY();
double Winches = (double)mydesk.width() / (double)mydesk.physicalDpiX();
double Hinches = (double)mydesk.Height() / (double)mydesk.physicalDpiY();
mydesk.width() 和 mydesk.height() 以像素为单位给出大小(分辨率)
但是测量结果也是错误的,非常接近mydesk.widthMM()和mydesk.heightMM()
我也试过mydesk.logicalDpiX(),结果相似。
【问题讨论】:
-
那些方法对我从来没有用过。获得真实测量结果的唯一方法是参考屏幕上的真实对象(想想角钱、尺子等)。
-
嗨 Sosukodo,您对“在屏幕上引用真实世界的对象”有何看法?谢谢
-
我一直在编写一个示例应用程序,但还没有完成。无论如何,如果您知道一角硬币的大小是 17.9 毫米,并且您向用户展示一角硬币的图片,然后让他们放大/缩小直到图片与物理硬币匹配,它基本上说:17.9 毫米 = N 个像素我的屏幕.. 从中您可以进行简单的数学计算来计算您的屏幕测量值中有多少角钱。
标签: qt size screen monitor dpi