【发布时间】:2015-12-18 08:42:30
【问题描述】:
我正在设法获得真正的全局热键(即,即使应用程序失焦,也会在某些输入上发出信号)
对于 win、osx 和 x11,这将需要不同的代码。在 qt 创建者中,我应该如何使它适合跨平台开发。
编辑:我不想知道如何使用 x11、windows 等执行实际代码。我只想知道如何为每个平台进行单独定义。
【问题讨论】:
标签: qt cross-platform qt-creator
我正在设法获得真正的全局热键(即,即使应用程序失焦,也会在某些输入上发出信号)
对于 win、osx 和 x11,这将需要不同的代码。在 qt 创建者中,我应该如何使它适合跨平台开发。
编辑:我不想知道如何使用 x11、windows 等执行实际代码。我只想知道如何为每个平台进行单独定义。
【问题讨论】:
标签: qt cross-platform qt-creator
我不想知道如何使用 x11、windows 等执行实际代码。 我只想知道如何为每个单独定义 平台。
使用基于预定义编译器符号的 ifdef 很方便,例如:
http://sourceforge.net/p/predef/wiki/OperatingSystems/
#ifdef __linux__ // linux related, GCC has that macros
// your code and/or definitions
#endif
#if defined(__linux__) || defined(macintosh)
// your code and/or definitions
#endif
您也可以在那里使用 OR 逻辑,因为 Mac 上的许多东西都类似于 Linux,反之亦然。但是,请注意编译器,如果它有那个符号。我会将 OR 逻辑与适用编译器的所有平台符号一起使用。
【讨论】:
如果您愿意使用 Qt,它有 OS 和编译器定义供您轻松使用:
#include <QtGlobal>
#if defined(Q_OS_LINUX)
// linux-specifc
#elif defined(Q_OS_WIN32) && defined(Q_CC_MSVC)
// win32 and msvc
#endif
【讨论】: