你不知道的21個Qt隱藏功能和技巧
阿新 • • 發佈:2018-12-31
- 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。