代码之家  ›  专栏  ›  技术社区  ›  andreas buykx

如何确定运行时运行的平台qt?

  •  25
  • andreas buykx  · 技术社区  · 16 年前

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

    3 回复  |  直到 7 年前
        1
  •  26
  •   Reed Hedges    16 年前

    请注意,q_ws_x宏是在编译时定义的,但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类似。

        2
  •  57
  •   Anthony Hilyard    9 年前

    意图:尽管我不想提问题 我想那差不多2岁了 一个好的修正答案是有价值的 记录在案,以便其他人 在这个问题上可以做到 正确的方法。

    我忍不住注意到,大多数答案都建议使用Q_ws宏集来确定操作系统,这不是一个好的解决方案,因为Q_ws_u*指的是窗口系统而不是操作系统平台(例如,X11可以在Windows或Mac OS X上运行,那又是什么?)因此,不应遵循这些宏来确定为其编译应用程序的平台。

    相反,我们应该使用一组宏,它们具有确定操作系统的精确目的。

    该集合当前包含以下宏:

    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_ux宏集,因此现在您可以使用的都是q_o s_ux宏集。

        3
  •  0
  •   sunyata    7 年前

    为了 QT5 我使用以下方法:

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

    文档: http://doc.qt.io/qt-5/qsysinfo.html