2009-01-24 78 views

回答

26

請注意,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類似。

+1

廢棄了,因爲Qt的5.在Shinnok的答案是正確的。 – SexyBeast 2016-02-06 16:59:36

56

意向:雖然我不想提了一個問題 這是近2年的時候,我覺得 一個好的修正答案是有價值 有記錄,這樣其他人 結束了在這個問題上能以正確的方式執行 。

我不禁注意到,大部分的答案建議使用Q_WS宏集,以確定操作系統,這不是一個很好的解決方案,因爲Q_WS_ *指的是視窗系統,而不是工作系統平臺(例如,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

NB:由於在評論中提到由奇才,Qt的5完全除去Q_WS_ *設定宏,從而現在所有你可以使用的都是Q_OS_ *。

+4

總是歡迎好的答案 – 2011-02-08 20:12:06

0

對於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