2009-01-24 3 views

Répondre

26

Notez que les macros Q_WS_ * sont définies au moment de la compilation, mais QSysInfo donne des détails sur l'exécution.

Pour fonction d'extension de gs pour obtenir la version Windows spécifiques à l'exécution, vous pouvez faire

#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 

et similaire pour Mac.

+1

Déconseillédepuis Qt 5. La réponse Shinnok est la bonne. – SexyBeast

56

Intention: Bien que je déteste soulever une question qui est presque 2 ans, je pense qu'une bonne réponse modifiée est précieuse avoir enregistré de telle sorte que d'autres qui finissent sur cette question peut faites le droit chemin.

Je ne peux pas empêcher de remarquer que la plupart des réponses recommandons l'utilisation de l'ensemble Q_WS de macros pour déterminer le système d'exploitation, ce n'est pas une bonne solution, car Q_WS_ * fait référence au système de fenêtrage et non l'exploitation La plate-forme système (par exemple X11 peut être exécutée sur Windows ou Mac OS X, alors quoi?), Il ne faut donc pas suivre ces macros pour déterminer la plate-forme pour laquelle l'application a été compilée. A la place, on devrait utiliser l'ensemble de macros Q_OS_ * qui ont pour but précis de déterminer le système d'exploitation.

L'ensemble se compose actuellement des macros suivantes:

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 

Référence: http://doc.qt.io/qt-4.8/qtglobal.html

NB: Comme mentionné par Wiz dans les commentaires, Qt 5 éliminé complètement la Q_WS_ * ensemble de macros, ainsi maintenant tout ce que vous pouvez utiliser sont les Q_OS_ *.

+4

Les bonnes réponses sont toujours les bienvenues –

+8

Vous pouvez également ajouter le fait que Qt5 a complètement supprimé toutes les macros Q_WS_ *. Donc, Q_OS_ * est maintenant le seul moyen d'y aller. – Wiz

+1

N'oubliez pas #include paulm

0

Pour QT5 J'utilise les éléments suivants:

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("#####") 

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

Questions connexes