Existe-t-il un moyen (Qt) pour déterminer la plate-forme sur laquelle une application Qt s'exécute au moment de l'exécution?Comment déterminer la plate-forme Qt s'exécute lors de l'exécution?
Répondre
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.
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_ *.
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
- 1. Comment déterminer la largeur d'une chaîne lors de l'impression?
- 2. Erreur lors de la compilation dans Qt (Ubuntu)
- 3. Comment faire qmake compiler plusieurs binaires multi-plateforme
- 4. Comment décririez-vous l'état actuel de la plateforme Android?
- 5. Comment installer les outils de la plateforme Web dans Eclipse?
- 6. Comment générer dynamiquement des éléments d'écran dans la plateforme OutSystems?
- 7. Comment libérer la mémoire lors de la fermeture d'une fenêtre Qt?
- 8. sqlite, mono, plateforme croisée C#
- 9. Comment déterminer quel widget viser avec des feuilles de style Qt
- 10. Comment détecter l'état de la souris dans Qt sans MouseEvent
- 11. Qt Placement de la fenêtre enfant
- 12. La plateforme WCF est-elle indépendante?
- 13. Configuration de l'application multi-plateforme
- 14. Comment déterminer le délai d'attente de session lors de la réutilisation de CookieContainer
- 15. Comment déterminer la valeur d'une variable de contrôleur lors de l'exécution dans Ruby on Rails?
- 16. Comment déterminer la version de oc4j utilisée?
- 17. Contrôle RTF multi-plateforme?
- 18. Comment déterminer la taille optimale du cache d'instructions préparées lors de l'utilisation d'Hibernate
- 19. Comment déterminer s'il existe des colonnes cachées lors de la copie dans Excel VBA
- 20. ComboBox de style smartphone sur la plateforme PocketPC?
- 21. Comment déterminer la classe d'une page ASPX?
- 22. intrication de la parcelle dans Qt gui
- 23. Comment puis-je déterminer la source de l'événement SelectionChangedEvent
- 24. force lors de la construction de régénération des liens QT Creator
- 25. exécutable multi-plateforme/méthode de livraison d'exécution
- 26. solutions de compilation/compilation multi-plateforme
- 27. Déterminer la matrice de transformation
- 28. Utilisation de la mémoire de l'application C++/Qt
- 29. Comment réparer mon application à partir d'une fuite lors de l'utilisation de Qt 4.5?
- 30. Requête sur plateforme de filtrage Windows
Déconseillédepuis Qt 5. La réponse Shinnok est la bonne. – SexyBeast