Gibt es einen (Qt) Weg, um die Plattform zu bestimmen, auf der eine Qt-Anwendung zur Laufzeit läuft?Wie kann ich feststellen, auf welcher Plattform Qt zur Laufzeit läuft?
Antwort
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.
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.
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
Veraltet seit Qt 5. Shinnok Antwort die richtige ist. – SexyBeast