学习资料:21个Qt隐藏功能和技巧

莫等闲 2010-05-25 12:58:03
加精
最近看了stackoverflow上一个讨论,写了篇blog,列举了Qt的一些鲜为人知但是非常有用的小功能:

1. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能
2. Q_ENUMS:对枚举对象进行反射(reflection)
3. Q_SIGNAL:不需要signals关键字就可以将一个函数指定为singal函数
4. Q_SLOT:不需要slots关键字就可以将一个函数指定为slot函数
5. Q_FOREACH:Qt提供的关键字foreach在配置文件里面定义了no_keywords的时候就失效了,而Q_FOREACH宏无论何时都有效
6. Q_FOREVER:原因同Q_FOREACH,用法和关键字forever一样
7. qChecksum:计算基于CRC-16-CCITT算法的CRC-16校验码
8. qCompress/qUncompress:基于zlib的算法对字节缓存区进行压缩/解压,可以自定义压缩比
9. qDeleteAll:对容器或者迭代器中的每个对象进行delete操作
10. qRound/qRound64:对浮点数取整,四舍五入
11. qFuzzyCompare:线程安全的浮点数模糊比较,处理了浮点精度误差的问题
12. qVersion:获取当前正在运行的Qt的版本号
13. sender:在slot函数中调用可以获取发送该signal的对象。仅用于来自同一线程的Qt::DirectConnection连接的 signal。由于这种做法破坏了面向对象的原则,慎用!
14. QSysInfo:获取当前运行的系统信息,包括版本号等,Mac/Symbian/Windows均适用
15. QtEndian:处理不同体系架构下字节存储次序不同的问题
16. QObject::findChildren<>:找出隐藏的子对象
17. qobject_cast:不需要编译器RTTI的支持就可以实现C++标准库dynamic_cast的功能
18. QObject::deleteLater:在事件处理循环中调用,则在事件处理循环结束时删除自己;在事件处理循环外调用,则在下一个事件处理循环开始时删除自己
19. qPrintable:类似QString::toLocal8Bit()::constData(),但是更好记
20. qDebug():类似Windows下的TRACE或者OutputDebugString
21. connect(SomeObj, SIGNAL(foo()), SIGNAL(bar()):通过一个signal自动触发另一个signal。

如果要看原文的话在这里:http://blog.csdn.net/aladdina/archive/2010/05/23/5618247.aspx

大家还有啥补充或者建议吗?
...全文
5696 192 打赏 收藏 转发到动态 举报
写回复
用AI写文章
192 条回复
切换为时间正序
请发表友善的回复…
发表回复
ytdgh1988 2011-08-29
  • 打赏
  • 举报
回复
路过,不懂,帮楼主顶一下
念茜 2011-08-27
  • 打赏
  • 举报
回复
顶一个
fengwanzk 2011-08-26
  • 打赏
  • 举报
回复
某些对我有用,收藏了
stoneyrh 2011-02-01
  • 打赏
  • 举报
回复
绝大部分都经常用到,也不是说很隐藏
asasdaf 2011-01-30
  • 打赏
  • 举报
回复
学习一下先。。。虽然暂时没有用到这个东东。。。。
xiuxianshen 2011-01-24
  • 打赏
  • 举报
回复
Good!收藏一下
Qt344 2011-01-23
  • 打赏
  • 举报
回复
我现在正在使用QSysInfo类获取系统版本,但是在2003,vista,WINDOWS7下不能具体的把版本分开,导致获取不到版本
Jerry_Lee01 2010-12-28
  • 打赏
  • 举报
回复
好东西啊
gaowenboms 2010-12-28
  • 打赏
  • 举报
回复
有一些学过记得了,有一些没用到过
swordoh 2010-12-27
  • 打赏
  • 举报
回复
正好在学习,谢谢分享
hiok520 2010-12-25
  • 打赏
  • 举报
回复
收下了,路过就藏着,希望用的着
hughwisdom 2010-11-01
  • 打赏
  • 举报
回复
收藏一下。。。
xiaoxin_ye 2010-11-01
  • 打赏
  • 举报
回复
学习lz好榜样 忠于革命忠于党
影风骑士 2010-10-28
  • 打赏
  • 举报
回复
标记一下,暂时没看出啥名堂
bbnjack 2010-10-15
  • 打赏
  • 举报
回复
学习。。。
AbnormalSubmarine 2010-10-13
  • 打赏
  • 举报
回复
下次试试................
fengqiao1999 2010-10-10
  • 打赏
  • 举报
回复
支持楼主....
kumanong 2010-10-08
  • 打赏
  • 举报
回复
真的很难记
dmlyjr 2010-08-30
  • 打赏
  • 举报
回复
这样讲比较空洞阿 最好来点实际的例子
chuckbass423 2010-08-27
  • 打赏
  • 举报
回复
看看再说,以后也许用得到
加载更多回复(158)

16,199

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧