Qt隐藏的功能和技巧

来源:互联网 发布:win7系统网络驱动下载 编辑:程序博客网 时间:2024/05/16 14:15
  1. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能
  2. Q_ENUMS:对枚举对象进行反射(reflection)
  3. Q_SIGNAL:不需要signals关键字就可以将一个函数指定为singal函数
  4. Q_SLOT:不需要slots关键字就可以将一个函数指定为slot函数    
  5. Q_SIGNALS 与 Q_SLOTS是Qt 4.1引入的,它们用来替换关键字signals和slots,原因是更好的与第三方信号槽机制兼容,比如boost库。尽管Q_SIGNALS 与 Q_SLOTS看起来没有做什么。其实不然,QT的元对象编译器moc会识别声明在头文件中的宏Q_SIGNALS,Q_SLOTS。并做为依据,生成元对象模型数据
  6. Q_FOREACH:Qt提供的关键字foreach在配置文件里面定义了no_keywords的时候就失效了,而Q_FOREACH宏无论何时都有效
  7. Q_FOREVER:原因同Q_FOREACH,用法和关键字forever一样
  8. qChecksum:计算基于CRC-16-CCITT算法的CRC-16校验码
  9. qCompress/qUncompress:基于zlib的算法对字节缓存区进行压缩/解压,可以自定义压缩比
  10. qDeleteAll:对容器或者迭代器中的每个对象进行delete操作
  11. qRound/qRound64:对浮点数取整,四舍五入
  12. qFuzzyCompare:线程安全的浮点数模糊比较,处理了浮点精度误差的问题
  13. qVersion:获取当前正在运行的Qt的版本号
  14. sender:在slot函数中调用可以获取发送该signal的对象。仅用于来自同一线程的Qt::DirectConnection连接的signal。由于这种做法破坏了面向对象的原则,慎用!
  15. QSysInfo:获取当前运行的系统信息,包括版本号等,Mac/Symbian/Windows均适用
  16. QtEndian:处理不同体系架构下字节存储次序不同的问题
  17. QObject::findChildren<>:找出隐藏的子对象
  18. qobject_cast:不需要编译器RTTI的支持就可以实现C++标准库dynamic_cast的功能
  19. QObject::deleteLater:在事件处理循环中调用,则在事件处理循环结束时删除自己;在事件处理循环外调用,则在下一个事件处理循环开始时删除自己
  20. qPrintable:类似QString::toLocal8Bit()::constData(),但是更好记
  21. qDebug():类似Windows下的TRACE或者OutputDebugString
  22. connect(SomeObj, SIGNAL(foo()), SIGNAL(bar()):通过一个signal自动触发另一个signal。
  23. Q_UNUSED( name):指示编译器,在函数的主体中不使用指定名称(name)的参数。这可以用于抑制编译器警告,同时允许在其签名中定义有意义的参数名称

    整理自Stack Overflow和Qt Assistant,未完待续。。。