欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Qt常用宏定义判断大全

Qt常用宏定义判断大全

2025/4/2 17:18:34 来源:https://blog.csdn.net/byxdaz/article/details/146837954  浏览:    关键词:Qt常用宏定义判断大全

        Qt 提供了一系列预定义宏用于判断 Qt 版本、操作系统平台、编译器特性等。这些宏在跨平台开发中非常有用。

1. Qt 版本判断宏

// 检查Qt版本
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)// Qt 5.15.0及以上版本特有代码
#endif// 常用版本判断
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)// Qt6特有代码
#elif QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)// Qt5特有代码
#else// Qt4代码
#endif

2. 操作系统平台判断 

// 操作系统平台判断
#ifdef Q_OS_WIN// Windows平台特有代码#ifdef Q_OS_WIN32// 32位Windows#endif#ifdef Q_OS_WIN64// 64位Windows#endif
#endif#ifdef Q_OS_LINUX// Linux平台特有代码
#endif#ifdef Q_OS_MACOS// macOS平台特有代码(原Q_OS_MAC在Qt5.9后建议使用Q_OS_MACOS)
#endif#ifdef Q_OS_ANDROID// Android平台特有代码
#endif#ifdef Q_OS_IOS// iOS平台特有代码
#endif#ifdef Q_OS_UNIX// 所有Unix-like系统(包括Linux、macOS等)
#endif

3. 编译器特性判断

// 编译器判断
#ifdef Q_CC_MSVC// Microsoft Visual C++编译器
#endif#ifdef Q_CC_GNU// GCC编译器
#endif#ifdef Q_CC_CLANG// Clang编译器
#endif// C++标准版本判断
#if __cplusplus >= 201703L// C++17及以上
#elif __cplusplus >= 201402L// C++14
#elif __cplusplus >= 201103L// C++11
#endif

4. 构建类型判断 

// 调试/发布模式判断
#ifdef QT_DEBUG// 调试模式特有代码
#else// 发布模式代码
#endif// 静态/动态库判断
#ifdef QT_STATIC// 静态链接Qt库
#endif

5. 功能特性判断

// 检查Qt模块是否可用
#ifdef QT_WIDGETS_LIB// Widgets模块可用
#endif#ifdef QT_NETWORK_LIB// Network模块可用
#endif#ifdef QT_SQL_LIB// SQL模块可用
#endif// 检查特性支持
#ifdef QT_DEPRECATED_WARNINGS// 启用了deprecation警告
#endif#ifdef QT_RESTRICTED_CAST_FROM_ASCII// 启用了从ASCII的受限转换
#endif

6. 处理器架构判断

// 处理器架构判断
#ifdef Q_PROCESSOR_X86// x86架构
#endif#ifdef Q_PROCESSOR_ARM// ARM架构
#endif#ifdef Q_PROCESSOR_X86_64// x86_64(64位)架构
#endif

7. 实用宏定义

// 字符串化宏
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)// 标记未使用参数(避免编译器警告)
#define Q_UNUSED(x) (void)x;// 标记函数为弃用
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)Q_DECL_DEPRECATED void oldFunction();
#endif// 标记函数为不推荐使用(但尚未弃用)
Q_DECL_DEPRECATED_X("Use newFunction() instead") void legacyFunction();

8. 条件编译最佳实践

// 平台特定代码处理示例
QString getConfigPath() 
{QString path;#ifdef Q_OS_WINpath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
#elif defined(Q_OS_MACOS)path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
#elif defined(Q_OS_LINUX)path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
#elsepath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
#endifreturn path;
}// 版本兼容处理示例
void setHighDpiScaling() 
{
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
#endif
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词