Qt检查平台类型:移动或桌面

StE*_*nIn 9 c++ linux qt android ios

我正在寻找一些可以用来检查我的应用程序是在手机/平板电脑还是计算机上执行的代码.这是一个解释我正在做什么的示例:

#include <QtGlobal>

#if defined Q_OS_BLACKBERRY || defined Q_OS_ANDROID || defined Q_OS_IOS || defined Q_OS_WP
#define Q_OS_MOBILE
#else
#define Q_OS_DESKTOP
#endif
Run Code Online (Sandbox Code Playgroud)

你觉得怎么样?我重新发明轮子了吗?

Jam*_*ner 1

(据我所知)没有预制的 #defines 的原因是移动、桌面和嵌入式的定义是模糊的。例如,Q_OS_QNX 与 Q_OS_BLACKBERRY 一起设置,Q_OS_DARWIN 在 Q_OS_IOS 和 Q_OS_MACX 上都设置。Android 上的 Q_OS_LINUX 也存在类似问题,Windows 版本也存在一系列混乱。

如果您建议的定义适用于您的用例,我认为这是一种完全合理的继续方式。不过,我可能会使用与 Q_OS_foo 不同的命名方案。