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
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76469.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實戰 | 餐廳點餐小程序技術解析:SpringBoot + UniApp 高效開發指南

🖥? 一、系統架構概覽 1.1 技術選型 為了確保開發效率和系統穩定性,我們采用以下技術棧: 模塊技術選型后臺服務SpringBoot MyBatis-Plus MySQL用戶端(點餐小程序)UniApp(Vue 語法)師傅端&…

實現在Unity3D中仿真汽車,而且還能使用ros2控制

文章目錄 前言(Introduction)搭建開發環境(Setup Development Environment)在window中安裝Unity(Install Unity in window)創建Docker容器,并安裝相關軟件(Create Docker containers…

華為配置篇-BGP實驗

BGP 一、簡述二、常用命令總結三、實驗 一、簡述 IBGP 水平分割:從一個 IBGP 對等體學到的路由,不會再通告給其他的 IBGP 對等體。在一個 AS 內部,路由器之間通過 IBGP 交換路由信息。如果沒有水平分割機制,當多個路由器之間形成…

Python視頻標簽工具詳解:基于wxPython和FFmpeg的實現

在當今數字媒體時代,視頻內容的管理和標記變得越來越重要。無論是研究人員需要對實驗視頻進行時間點標記,教育工作者需要對教學視頻添加注釋,還是個人用戶希望對家庭視頻進行分類整理,一個高效的視頻標簽工具都是不可或缺的。本文…

國產三維CAD「皇冠CAD」在汽車零部件領域建模教程:剎車片

本教程深度融合三維皇冠CAD(CrownCAD)的MBD(Model-Based Definition)設計理念,通過參數化建模、智能約束管理、動態裝配驗證等功能,實現數據驅動設計,精準解決了汽車制動系統中精密制動組件的設…

C#從入門到精通(3)

目錄 第九章 窗體 (1)From窗體 (2)MDI窗體 (3)繼承窗體 第十章 控件 (1)控件常用操作 (2)Label控件 (3)Button控件 &…

關于跨域與.NET的處理方案

在 Web 開發里,瀏覽器的同源策略是一項關鍵的安全機制。同源指的是兩個 URL 的協議、域名和端口都相同。當瀏覽器從一個源(域名、協議、端口)的網頁去請求另一個源的資源時,就會產生跨域問題。例如,從 http://www.exam…

react 15-16-17-18各版本的核心區別、底層原理及演進邏輯的深度解析--react18

React 18 是一次重大的版本升級(發布于2022年),引入了并發渲染(Concurrent Rendering) 和一系列新特性,旨在提升應用性能、用戶體驗和開發靈活性。 一、核心新特性 并發模式(Concurrent Mode&a…

基于Spring Boot的平面設計課程在線學習平臺系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

Scala-面向對象

Scala 包 基本語法 package 包名 Scala 包的三大作用(和 Java 一樣) 區分相同名字的類 當類很多時,可以很好的管理類 控制訪問范圍 包的命名、說明、對象 包的命名 命名規則 只能包含數字、字母、下劃線、小圓點.,但不能用數字…

Excel 使用技巧:excel 合并不同列內容; excel 將公式轉化為文本

Excel 使用技巧 目錄 Excel 使用技巧excel 合并不同列內容="A:"&C1&"、B:"&D1&"、C:"&E1&"、D:"&F1excel 將公式轉化為文本右鍵選擇行粘貼某一列均填入“提示詞”單擊拖動雙擊某一列均填入“1”清除1…

【數字化轉型,企業應用上云】---持續集成能力重塑企業軟件交付新范式

在數字化轉型浪潮中,軟件交付的速度與質量已成為企業核心競爭力的關鍵。如何高效管理從代碼開發到生產上線的全流程,實現開發與運維的無縫協作?如何通過自動化手段減少人為失誤、加速迭代周期?我們出的研發效能管理平臺&#xff0…

OpenCV圖像形態學:原理、操作與應用詳解

一、引言 圖像形態學(Image Morphology)是圖像處理領域的一個重要分支,它基于集合論、格論、拓撲學和隨機函數理論,主要用于分析和處理圖像的幾何結構。形態學操作通過特定的結構元素(Structuring Element)…

jenkins 參數化發布到服務器 publish over ssh、label、Parameterized publishing

前言 jenkins 參數化發布到服務器 jenkins可匹配標簽通過一個字符串或者正則表達式來匹配jenkins 可通過參數配置發布到服務器,比如打包后,根據參數配置,只發布到某個服務器。 設置選項參數 新增選項參數,比如填入myParameter…

第十二章網絡規劃設計

文章目錄 12-1考點分析12-2綜合布線(歷年高頻考點)12-3網絡設計與分析12-4網絡結構與功能12-5廣域網接入技術12-6網絡故障診斷與排查章節總結 12-1考點分析 12-2綜合布線(歷年高頻考點) 結構化布線系統 網絡規劃和設計是一個迭代和優化的過程。 ■ 結構化綜合布線系統是基于…

Qt基本框架(1)

本篇主要介紹Qt的基本框架,并實現簡單的按鈕事件 本文部分ppt、視頻截圖原鏈接:[萌馬工作室的個人空間-萌馬工作室個人主頁-嗶哩嗶哩視頻] 1. Qt基本框架介紹 Qt基本框架主要分為兩部分:Qt實例對象和Qt窗口。Qt實例對象負責初始化Qt運行時…

數據倉庫項目啟動與管理

數據倉庫項目啟動與管理 確定項目 評估項目就緒情況 項目就緒的三個條件 強力型高級業務管理發起人 對數據倉庫解決方案的影響有先見之明是所在組織內有影響的領導者要求嚴格,但是又比較現實,會為其他成員提供強力支持 強制型業務動機 數據倉庫系統和戰略性業務動機緊密結合…

C 標準庫 - `<ctype.h>`

C 標準庫 - <ctype.h> 在C語言編程中&#xff0c;標準庫函數 <ctype.h> 提供了一組用于檢查字符類型、轉換大小寫以及其他字符處理的函數。這些函數對于字符處理和字符串操作至關重要&#xff0c;特別是在處理用戶輸入或文件內容時。以下是關于 <ctype.h> 標…

安裝完 miniconda3 ,cmd無法執行 conda 命令

提示&#xff1a;安裝 miniconda3 文章目錄 前言一、安裝二、安裝完&#xff0c;cmd 無法執行 conda 前言 提示&#xff1a;版本 系統&#xff1a;win10 codna: miniconda3 安裝完 miniconda3 &#xff0c;cmd無法執行 conda 命令 提示&#xff1a;以下是本篇文章正文內容&am…

RedisTemplate 的 6 個可配置序列化器屬性對比

RedisTemplate 的 6 個可配置序列化器屬性對比 RedisTemplate 提供了以下 6 個核心屬性&#xff0c;用于分別配置鍵、值、哈希類型數據的序列化方式&#xff1a; 1. keySerializer 作用&#xff1a;定義 Redis 鍵的序列化方式。默認值&#xff1a;JdkSerializationRedisSeria…