当前位置:   article > 正文

QT 判断当前系统_qt 判断操作系统

qt 判断操作系统

我们在使用QT编程的时候,有时会遇到跨平台的状况(毕竟QT本身就是因优秀的跨平台特性而出名),在这种情况下,判断当前是哪一种平台就非常必要了,这里介绍一下QT提供的各种判断操作系统和编译平台的做法:

1、如果仅仅想要当前是windows、mac还是linux系统的话,可以直接使用宏:

Q_OS_LINUX:定义在linux系统中

Q_OS_WIN:定义在windows系统中

Q_OS_OSX:定义在OS X系统中

2、如果还想更细致的判断系统,比如当前是windows 32位系统还是64位系统,是IOS系统还是Android系统,又或者当前是否在ARM环境中?当然也是可以的:

Q_OS_WIN64:定义在windows 64位系统中

Q_OS_IOS:定义在IOS系统中

Q_OS_ANDROID:定义在Android系统中

Q_PROCESSOR_ARM:是否为ARM处理器编译环境

3、如果还不满意,比如我想知道当前的windows系统是winXP、win7、还是win10,那肯定也是有的,不过这就不在预编译里面判断了,需要在代码中进行判断,相对于普通的C++,QT封装了很多好用的类,有些类可以帮助我们更快速更方便的使用C++,比如QString类,从此妈妈再也不用担心我不会用std::string,又比如QSysInfo类,看名字就知道这个类和系统信息有关,而我们用来识别操作系统就是用这个类进行判断的。首先看看QT文档中的介绍:

翻译:

QSysInfo类提供有关系统的信息。
WordSize:判断编译应用程序的平台的指针大小(注:不同操作系统和编译环境下指针大小不同)。
ByteOrder:判断当前平台是大端还是小端。
WindowsVersion:判断运行应用程序的Windows操作系统的版本。
MacintoshVersion:判断运行应用程序的Macintosh操作系统的版本。
某些常量仅在指定平台上定义。 您可以使用预处理器符号Q_OS_WIN和Q_OS_OSX来测试应用程序当前是在Windows还是OS X下编译。
看完上面的介绍大概就清楚了,利用QSysInfo可以得到各种操作系统的信息,比如,我最近想要将一个软件放在windows XP中运行,其中有一个dll库仅支持windows7及以上的windows版本,那么可以在代码中这样判断:

  1. if(QSysInfo::windowsVersion() == QSysInfo::WV_XP) {
  2. QMessageBox msgBox;
  3. msgBox.setText(QStringLiteral("产品暂不支持windows XP操作系统"));
  4. msgBox.exec();
  5. return false;
  6. }

这样就很方便的将不支持XP系统的功能避开,避免出现类似于【无法定位程序输入点XXX于动态链接库KERNEL32.dll上】这样的问题。(如下图)

同学们如果遇到上述的问题,也可以看看是否有因为库文件不支持或者是库文件不对造成的问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/112750
推荐阅读
相关标签
  

闽ICP备14008679号