auto头文件 qt_Qt高级编码约定

本文概述了在Qt编程中应遵循的高级编码约定,包括避免使用异常和rtti,谨慎使用模板,以及如何正确处理头文件包含。此外,还强调了在信号/槽连接、类型转换和全局对象初始化时的注意事项,以及对编译器/平台特定问题的考虑。推荐使用C++强制转换,避免C风格转换,并明确指出不要在Qt子类中隐藏virtual方法。
摘要由CSDN通过智能技术生成

这是我们在编写Qt代码时使用的高级编码约定的概述。有关Qt代码规范,请参见Qt代码风格一文。对于QML,请参阅QML代码规范一文。

C++特性

不要使用异常。

不要使用rtti(运行时类型信息:即typeinfo结构,dynamic_cast或typeid运算符,包括引发异常)。

谨慎明智地使用模板,不仅仅是因为可以使用。 提示:使用编译自动测试可以查看测试中的所有编译器是否支持C++功能。

Qt源代码中的约定

所有代码仅是ascii(仅7位字符,如果不确定,请运行man ascii).

因为我们内部的语言环境太多,而且UTF-8和latin1系统的组合不健康。通常,您甚至不知道通过单击您喜欢的编辑器中的"保存"就可以破坏字符超过127个字符的范围。

对于字符串:使用\nnn(其中nnn是要在其中输入字符串的任何字符编码的八进制表示形式)或\xnn(其中nn是十六进制)。示例:QString s = QString::fromUtf8("13\005");

对于文档中的变音符号或其他非ASCII字符,请使用qdoc的命令或使用相关的宏。例如\uuml表示ü。

每个QObject子类都必须具有Q_OBJECT宏,即使它没有信号或槽也是如此,否则qobject_cast将失败。

在connect语句中规范化信号/槽的参数(请参阅QMetaObject::normalizedSignature),以更快地进行信号/槽查找。您可以使用qtrepotools/util/normalize规范化现有代码。

头文件包含

在公共头文件中,请始终使用以下形式包括Qt头: #include 。库前缀对于Mac OS X框架是必需的,对于非qmake项目也非常方便。

在源文件中,首先包括Qt的头文件,然后是通用的头文件。用空行分隔类别。例:

#include /* Qt类头文件 */#include /* STL 头文件 */#include /* 系统头文件 */

如果需要包括qplatformdefs.h,请始终将其作为第一个头文件包含。

如果您需要包含私有头文件,请当心。不管whatever_p.h位于哪个模块或目录中,请使用以下语法:

#include

类型转换

避免使用C强制转换,而建议使用C ++强制转换(static_cast,const_cast,reinterpret_cast)。

因为reinterpret_cast和C风格强制转换都是危险的,但是至少reinterpret_cast不会删除const修饰符。

不要使用dynamic_cast,不要对QObject使用qobject_cast或重构设计,例如,通过引入type()方法(请参阅QListWidgetItem)。

使用构造函数强制转换简单类型。例:int(myFloat)代替(int)myFloat。

另外重构代码时,编译器会立即通知您是否强制转换会很危险。

编译器/平台的特定问题

使用问号运算符时要格外小心。如果返回的类型不同,则某些编译器会生成在运行时崩溃的代码(您甚至不会收到编译器警告)。例如:

QString s;

return condition ? s : "nothing";

// 运行时崩溃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值