2013-12-16 79 views
5

我需要获取QT中显示屏幕的DPI值。我可以通过以下方式在QT 5.0中获得它:如何获得QT中显示屏幕的DPI

#include <QScreen> 

...... 
...... 
QScreen *srn = QApplication::screens().at(0); 
qreal dotsPerInch = (qreal)srn->logicalDotsPerInch(); 

但是,相同的代码会在QT 4.x版本中引发错误。我的项目是在QT 4.x版本中开发的。所以我需要在QT 4.x版本中的上述代码的等价物。

回答

2

我认为这是一个Qt5的补充。对于Qt4或更高版本(我认为它支持3 ...但不记得),您可以使用QPaintDevice获取类似信息,以下功能将对您有所帮助,具体取决于您需要执行的操作:

#include <QPaintDevice> 
... 

QPaintDevice paint; 
int dpiX = paint.logicalDpiX(); 
int dpiY = paint.logicalDpiY(); 
int width = paint.widthMM(); 
int height = paint.heightMM(); 

注意:这不是一个实现,只是示例函数调用。

+0

结果'can not instanitiate abstract class'error。 – Anton

+1

@AntonTugolukov注意:'这不是一个实现,只是示例函数调用':) –

1

在Qt 4.8这似乎这样的伎俩:

#include <QDesktopWidget> 

... 
int dpiX = qApp->desktop()->logicalDpiX(); 
... 
3

在QT5获取信息的另一种方式:
QWidget中含有physicalDpiX,physicalDpiY,logicalDpiY等等...
(QWidget的继承他们。一个QPaintDevice)
(认为OP说的Qt4,但QT5是目前发展)


故事:
我正面临同样的问题。
@code_fodder回答后(虽然不完整但仍值得信任)。 QPaintDevice提到的
包含那些相关的方法。

阅读更加过来,在预告后,
QWidget的继承自QObject和的QPaintDevice当我看到,原来如此!

+0

返回当前呈现的任何给定小部件的显示的显示度量。问题是要求**特定**显示的显示度量。这个答案没有解决这个问题。 – IInspectable