当前位置:  开发笔记 > 前端 > 正文

如何确定Qt在运行时运行的平台?

如何解决《如何确定Qt在运行时运行的平台?》经验,为你挑选了2个好方法。

是否有(Qt)方法来确定Qt应用程序在运行时运行的平台?



1> Shinnok..:

意图:虽然我讨厌提出一个差不多2年的问题,但我认为一个好的修正答案对于记录是有价值的,以便最终能够以正确的方式完成这个问题的其他人.

我不禁注意到,大多数答案都建议使用Q_WS宏来确定操作系统,这不是一个好的解决方案,因为Q_WS_*指的是Windowing System而不是操作系统平台(例如. X11可以在Windows或Mac OS X上运行吗?),因此不应该按照这些宏来确定编译应用程序的平台.

相反,应该使用具有确定操作系统的精确目的的Q_OS_*宏集.

该集合目前包含以下宏:

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

参考:http://doc.qt.io/qt-4.8/qtglobal.html

注意:正如Wiz在评论中所提到的,Qt 5完全删除了Q_WS_*宏集,因此现在你只能使用Q_OS_*1.


您还可以添加Qt5已完全删除所有Q_WS_*宏的事实.所以Q_OS_*现在是唯一的出路.

2> Reed Hedges..:

请注意,Q_WS_*宏是在编译时定义的,但QSysInfo提供了一些运行时详细信息.

要扩展gs的功能以在运行时获取特定的Windows版本,您可以这样做

#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

和Mac类似.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有