2009-01-24 15 views

उत्तर

26

ध्यान दें कि Q_WS_ * मैक्रोज़ संकलन समय पर परिभाषित किए गए हैं, लेकिन QSysInfo कुछ रन टाइम विवरण देता है।

विस्तार करने के लिए जी एस के क्रम में विशिष्ट खिड़कियों संस्करण प्राप्त करने के कार्य करते है, आप

#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 

और मैक के लिए इसी तरह के कर सकते हैं।

+1

पदावनत के बाद से क्यूटी 5. Shinnok के जवाब सही एक है। – SexyBeast

56

इरादा: मैं एक सवाल है कि लगभग 2 वर्ष की है ऊपर लाने के लिए नफरत है, मुझे लगता है कि है कि एक अच्छा संशोधन जवाब रिकार्ड पर है करने के लिए मूल्यवान है ताकि इस प्रश्न पर दूसरों कि अंत तक कर सकते हैं इसे सही तरीके से करें।

मैं मदद नहीं कर सकता लेकिन लगता है कि जवाब में से सबसे ऑपरेटिंग सिस्टम यह निर्धारित करने के, इस, एक अच्छा समाधान नहीं है, क्योंकि Q_WS_ * विंडोइंग प्रणाली को संदर्भित करता है और नहीं ऑपरेटिंग मैक्रो की Q_WS सेट का उपयोग की सलाह देते हैं सिस्टम प्लेटफार्म (उदाहरण के लिए एक्स 11 विंडोज या मैक ओएस एक्स पर चलाया जा सकता है तो क्या?), इस प्रकार किसी को उस प्लेटफॉर्म को निर्धारित करने के लिए उन मैक्रोज़ का पालन नहीं करना चाहिए जिसके लिए एप्लिकेशन संकलित किया गया है।

इसके बजाय किसी को मैक्रोज़ के 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

एनबी: टिप्पणी में जानकार द्वारा उल्लेख किया है, क्यूटी 5 पूरी तरह से Q_WS_ * मैक्रो का सेट अब इस प्रकार, हटाया आप जो भी उपयोग कर सकते हैं वह Q_OS_ * वाले हैं।

+4

अच्छे उत्तरों हमेशा स्वागत करते हैं –

+8

आप यह भी जोड़ सकते हैं कि Qt5 ने सभी Q_WS_ * मैक्रोज़ को पूरी तरह से हटा दिया है। तो Q_OS_ * अब जाने का एकमात्र तरीका है। – Wiz

+1

# शामिल करें paulm

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

संबंधित मुद्दे