- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt编码标准与编程惯例修改稿2改_LiveWritter版
Qt编程惯例
翻 译:wd007 XChinux
审 校:齐 亮
◆ C++ 特性
■ 不要使用异常
■ 不要使用rtti(运行时类型识别;主要包括,typeinfo结构,dynamic或者typeid
操作符,包括抛出异常等)
■ 慎明的使用模板类,只有当必需时才使用它,而不是仅仅因为你掌握了它的使用
方法。
提示:使用编译器的自动测试功能来确定某个C++特性是否被支持。
◆ Qt源代码书写惯例
■ 所有代码都仅仅使用ascii格式(7位字符,如果不确定,则可以运行manascii
来验证 )
● 原理:我们已经有了太多的新的语系作品以及UTF-8和Latin1混合的不健
壮的系统。当你在喜欢使用的编辑器中使用字符位数大于127的系统时,往往还没
有来得及保存,系统就会崩溃掉。
● 对于字符串:使用\nnn(这里nnn是八进制的字符,在任何系统中都可以
代表你要输入的字符)或者使用\xnn(这里xnn是十六进制的字符)。
举例:
QString s = QString::fromUtf8(”\213\005”);
● 对于文档中的变音,或者其他非ASCII的字符,或者使用qdoc的unicode
命令或者使用适当的宏;举例:对ü使用\uuml。
■ 所有QObject的子类都必须包含一个Q_OBJECT的宏,即便它并没有使用信号或
者槽,否则的话,qobject_cast就会运行失败。
■ 在 连 接 语 句 中 , 规 范 化 信 号 和 槽 中 的 参 数 ( 可 以 查 看
QMetaObject::normalizedSignature以获得规范化的信息)以获得更快速的信号/槽遍
历。你也可以使用$QTDIR/util/normalize来规范已有的代码
◎ 包含的头文件
■ 在公用的头文件中,头文件包含总是使用这样的形式:
#include QtCore/qwhatever.h
对于Mac OS X系统框架而言,QtCore这样的库前缀是必需的,这样的写法对非qmake
项目也是非常便利的
■ 在源文件中,先包含特定的头文件,再包含常用的头文件(如系统文件)
举例:
#include qstring.h // Qt 的类
#include new // 标准模板库中的模块
#include limits.h // 系统文件
■ 如果要包含qplatformdefs.h,总是第一个包含它
■ 如果要包含qt_x11_p.h,总是最后一个包含它
◎ 强制转换
■ 避免使用 C 风格的转换,使用 C++风格的转换(static_cast, const_cast,
reinterpret_cast)
● 原理:reinterpret_cast以及C风格的转换都是危险的,但好在前者在转换过
程中并不去掉const修饰符
■ 不要使用dynamic_cast,对QObject及其子类对象使用qobject_cast或者重构你
的设计,例如引入一个type()方法(参考QListWidgetItem)
■ 对于简单的变量类型转换,使用构造函数实现。注意形式是:int(myFloat)而不是
(int)myFloat
● 原理:当重构代码时,编译器会立即告诉开发者这种转换是否会带来危险
◎ 编译器/平台特定问题
■ 当使用有疑问的操作符时,要格外的小心。如果返回值类型不一致,某些编译器生
成的代码在运行时会崩溃(你甚至不会得到编译器给出的警告信息)
QString s;
return condition ? s : ”nothing”; //运行时崩溃
■ 对字节对齐问题要格外的小心
● 无论何时,进行一个指针转换以致于需要目标进行对齐而导致字节增加,其结
果可能致使在某些系统架构上运行时产生崩溃。举个例子,如果一个 const char *类型转
换为一个cons
您可能关注的文档
- DotA6.78英雄改动日志_6.78物品改动日志.pdf
- Earned Value Method 挣值法学习心得.pdf
- Doxygen心得.pdf
- DCFW-1800ES-UTM配置指南之日志收集.pdf
- DSG磨合期注意事项(仅做参考).pdf
- EPC基本概念.pdf
- ERP会计模块-报表公式-成本中心费用表.pdf
- ERP会计模块-报表公式-费用中心费用表.pdf
- FortiAnalyzer 生成日志报告.pdf
- flume自学文档.pdf
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- Siemens西门子工业抽屉式断路器主回路后垂直连接 抽屉式断路器主回路后垂直连接使用手册.pdf
- Samsung三星智能佩戴设备 Galaxy Fit3安全手册.pdf
- Samsung三星滚筒洗衣机 AI神 黑钻热泵洗烘旗舰 WD18DB8995BZSC使用手册.pdf
- Sakura樱花消毒柜 保洁柜消毒柜 SCQ-130D6用户手册说明书.pdf
- Hifiman头领科技ARYA UNVEILED说明书用户手册.pdf
- Siemens西门子工业抽屉式主回路连接前置端子 支撑件 抽屉式主回路连接前置端子 支撑件使用手册.pdf
- Siemens西门子工业中性线的外部电流传感器 中性线的外部电流传感器使用手册.pdf
- Siemens西门子工业电子脱扣单元 电子脱扣单元使用手册.pdf
- Razer雷蛇Playstation 专用雷蛇战锤狂鲨极速版 RZ12-038203 用户指南 (简体中文)说明书用户手册.pdf
最近下载
- 腰椎的解剖及腰部的层次解剖ppt参考课件.ppt
- 知识产权助推新质生产力发展.pptx VIP
- NB∕T 10805-2021 水电工程溃坝洪水与非恒定流计算规范.pdf
- 2022年鄄城县工会系统招聘考试题库及答案解析.docx VIP
- 2024年医师定期考核必考题库及答案.pdf
- 2023年互联网信息审核员理论考试题库(含答案).pdf VIP
- 2024中考语文《西游记》历年真题专练(学生版+解析版).pdf VIP
- 高中音乐鉴赏测试题.doc VIP
- 人教三上数学《数学广角—集合》单元作业设计方案(13页).pdf VIP
- 省级政府和重点城市一体化政务服务能力调查评估报告2021年.pdf VIP
文档评论(0)