2009-01-24 11 views

Antwort

26

Beachten Sie, dass die Q_WS_ * -Makros zur Kompilierzeit definiert sind, aber QSysInfo gibt einige Laufzeitdetails.

erweitern gs die Funktion der spezifischen Windows-Version zur Laufzeit zu bekommen, Sie

#ifdef Q_WS_WIN 
switch(QSysInfo::windowsVersion()) 
{ 
    case QSysInfo::WV_2000: return "Windows 2000"; 
    case QSysInfo::WV_XP: return "Windows XP"; 
    case QSysInfo::WV_VISTA: return "Windows Vista"; 
    default: return "Windows"; 
} 
#endif 

und ähnliche für Mac tun können.

+1

Veraltet seit Qt 5. Shinnok Antwort die richtige ist. – SexyBeast

56

Intention: Während ich hasse eine Frage zu bringen, die fast 2 Jahre alt ist, glaube ich , dass eine gute geänderte Antwort wertvoll ist aktenkundig zu haben, so dass andere, dass Ende auf diese Frage kann Mach es die richtige Weise.

ich nicht helfen kann, aber feststellen, dass das Betriebssystem der meisten Antworten empfehlen den Q_WS Satz von Makros, um festzustellen, dies keine gute Lösung ist, da Q_WS_ * auf das Windowing-System bezieht und nicht den Betrieb Systemplattform (z. B. X11 kann dann unter Windows oder Mac OS X ausgeführt werden?), Daher sollte man diesen Makros nicht folgen, um die Plattform zu ermitteln, für die die Anwendung kompiliert wurde.

Stattdessen sollte man die Makros Q_OS_ * verwenden, die den genauen Zweck haben, das Betriebssystem zu bestimmen.

Das Set zur Zeit der folgenden Makros besteht:

Q_OS_AIX 
Q_OS_BSD4 
Q_OS_BSDI 
Q_OS_CYGWIN 
Q_OS_DARWIN 
Q_OS_DGUX 
Q_OS_DYNIX 
Q_OS_FREEBSD 
Q_OS_HPUX 
Q_OS_HURD 
Q_OS_IRIX 
Q_OS_LINUX 
Q_OS_LYNX 
Q_OS_MAC 
Q_OS_MSDOS 
Q_OS_NETBSD 
Q_OS_OS2 
Q_OS_OPENBSD 
Q_OS_OS2EMX 
Q_OS_OSF 
Q_OS_QNX 
Q_OS_RELIANT 
Q_OS_SCO 
Q_OS_SOLARIS 
Q_OS_SYMBIAN 
Q_OS_ULTRIX 
Q_OS_UNIX 
Q_OS_UNIXWARE 
Q_OS_WIN32 
Q_OS_WINCE 

Referenz: http://doc.qt.io/qt-4.8/qtglobal.html

NB: Wie von Wiz in den Kommentaren erwähnt, 5 Qt die Q_WS_ vollständig entfernt * von Makros gesetzt, so dass jetzt Sie können nur Q_OS_ * -Einheiten verwenden.

+4

gute Antworten sind immer willkommen –

+8

Sie könnten auch hinzufügen, dass Qt5 alle Q_WS_ * Makros vollständig entfernt hat. Also ist Q_OS_ * jetzt der einzige Weg zu gehen. – Wiz

+1

Vergiss nicht #include paulm

0

Für QT5 Ich benutze folgendes:

logging.info("##### System Information #####") 
sysinfo = QtCore.QSysInfo() 
logging.info("buildCpuArchitecture: " + sysinfo.buildCpuArchitecture()) 
logging.info("currentCpuArchitecture: " + sysinfo.currentCpuArchitecture()) 
logging.info("kernel type and version: " + sysinfo.kernelType() + " " + sysinfo.kernelVersion()) 
logging.info("product name and version: " + sysinfo.prettyProductName()) 
logging.info("#####") 

Dokumentation: http://doc.qt.io/qt-5/qsysinfo.html