2013-12-16 16 views
5

Ich muss den DPI-Wert der Anzeige in QT bekommen. Ich bin in der Lage es in QT zu bekommen 5.0 mit dem folgenden:Wie bekomme ich die DPI des Bildschirms in QT

#include <QScreen> 

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

Aber der gleichen Code wirft Fehler in QT 4.x-Version. Mein Projekt wurde in QT 4.x Version entwickelt. Also brauche ich das Äquivalent des obigen Codes in QT 4.x Version.

Antwort

2

Ich denke, das ist ein Qt5-Zusatz. Für Qt4 oder älter (ich denke, es ist in 3 unterstützt ... aber kann mich nicht erinnern) können Sie das QPaintDevice verwenden, um ähnliche Informationen zu erhalten, hier sind die Funktionen, die Ihnen nützlich sein werden, je nachdem, was Sie tun müssen:

#include <QPaintDevice> 
... 

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

Hinweis: Dies ist keine Implementierung, nur Beispielfunktionsaufrufe.

+0

Ergebnisse im Fehler 'abstrakte Klasse nicht initiantiieren'. – Anton

+1

@AntonTugolukov Hinweis: 'Dies ist keine Implementierung, nur Beispielfunktionsaufrufe' :) –

1

In Qt 4.8 dies scheint den Trick zu tun:

#include <QDesktopWidget> 

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

Eine weitere Möglichkeit, Informationen in QT5 zu bekommen:
QWidget enthalten physicalDpiX, physicalDpiY, logicalDpiY et cetera ...
(QWidget erben sie von . QPaintDevice)
(dachte, die OP sagte Qt4, aber QT5 ist derzeit in Entwicklung)


Story:.
Ich hatte das gleiche Problem.
Nach @code_fodder antwort (obwohl in-komplett, aber immer noch verdienen Kredit).
erwähnt von QPaintDevice enthalten diese relevanten Methoden.

nach mehr über, in noticed Lesen,
QWidget erbt QObject und QPaintDevice und als ich sah, war es !.

+0

Das gibt Anzeigemetriken für die Anzeige zurück, für die ein bestimmtes Widget aktuell gerendert wird. Die Frage besteht darin, nach Anzeige-Metriken einer ** spezifischen ** Anzeige zu fragen. Diese Antwort adressiert dieses Problem nicht. – IInspectable

Verwandte Themen