2013-12-16 82 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