你不知道的21個Qt隱藏功能和技巧
2010年05月23日 16:45:00 莫等閒 閱讀數 14231
版權聲明:本文爲博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/aladdina/article/details/5618247
- Q_GADGET:不需要從QObject繼承就可以使用Qt的Meta Object功能
- Q_ENUMS:對枚舉對象進行反射(reflection)
- Q_SIGNAL:不需要signals關鍵字就可以將一個函數指定爲singal函數
- Q_SLOT:不需要slots關鍵字就可以將一個函數指定爲slot函數
- Q_FOREACH:Qt提供的關鍵字foreach在配置文件裏面定義了no_keywords的時候就失效了,而Q_FOREACH宏無論何時都有效
- Q_FOREVER:原因同Q_FOREACH,用法和關鍵字forever一樣
- qChecksum:計算基於CRC-16-CCITT算法的CRC-16校驗碼
- qCompress/qUncompress:基於zlib的算法對字節緩存區進行壓縮/解壓,可以自定義壓縮比
- qDeleteAll:對容器或者迭代器中的每個對象進行delete操作
- qRound/qRound64:對浮點數取整,四捨五入
- qFuzzyCompare:線程安全的浮點數模糊比較,處理了浮點精度誤差的問題
- qVersion:獲取當前正在運行的Qt的版本號
- sender:在slot函數中調用可以獲取發送該signal的對象。僅用於來自同一線程的Qt::DirectConnection連接的signal。由於這種做法破壞了面向對象的原則,慎用!
- QSysInfo:獲取當前運行的系統信息,包括版本號等,Mac/Symbian/Windows均適用
- QtEndian:處理不同體系架構下字節存儲次序不同的問題
- QObject::findChildren<>:找出隱藏的子對象
- qobject_cast:不需要編譯器RTTI的支持就可以實現C++標準庫dynamic_cast的功能
- QObject::deleteLater:在事件處理循環中調用,則在事件處理循環結束時刪除自己;在事件處理循環外調用,則在下一個事件處理循環開始時刪除自己
- qPrintable:類似QString::toLocal8Bit()::constData(),但是更好記
- qDebug():類似Windows下的TRACE或者OutputDebugString
- connect(SomeObj, SIGNAL(foo()), SIGNAL(bar()):通過一個signal自動觸發另一個signal。
文中的內容來自最近在StackOverflow上的一個討論。