- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* (演练例子) 待续 * 为了能够流化自定义类型,如Person,你只需要创建和操作符。 (演练例子) 待续 * 流化持有自定义类型如Person的QVariant对象是可以的。为使这生效,自定义类型必须用qRegisterMetaTypeStreamOperators进行注册。 在结果数据中,注意类型名字(Person) 该数据是16位unicode(_O_l_e) age为0x2a = 42 (十进制,int = 32位,即_ _ _*) 对此使用QVariant而不是你自己进行跟踪的话会增加文件大小和复杂度。 * 回顾自定义类型和Qt,这张幻灯片不仅仅是一张检查清单。 注意一个公有的析构函数是隐式添加到所有类中的 – 理解这并不是一个私有/保护的析构函数。 * QSet展示了一组值,每个值都是独特的。 它外观和行为都像一个QList,但是不允许复制条目。 * QMap和QHash类允许键-值集合。 集合中每个条目和键都关联一个值。 QMap直接使用值,而QHash通过一个hash函数来传递键。我们马上察看它,但是QHash可以以稍高的复杂性为代价提供更好的性能。 待续 * 使用QMap时,一个比较操作符()需要为关键类型定义。 你可以使用[]或insert来填充map。 你可以用[]或value来读取。先使用contains以确定一个元素是否存在。 当用[]进行读取的时候你会冒着插入empty值的风险,因为当它不存在时[]会创建一个键。 待续 * 映射所使用的是给定的关键类型。比如,如果你的键是一个字符串,寻找一个值将会进行字符串比较操作。 QHash始终使用unsingned整数作为键。该键,比如字符串,被hash成一个uint值。这可以提高性能。 QHash类可以处理多个键对应一个哈希值的情况,但是那意味着它需要依赖可能比较缓慢的键比较,比如,字符串比较。 为得到QHash中的最佳新能,必须设计哈希函数以在给定的应用程序里避免冲突。 待续 * 要在一个QHash的关联数组中使用一个类型作为一个键,需要qHash和==操作符。 例子中展示了一个自定义类型,Person,它作为键来使用。每一个Person有一个age和一个name组成。然后它们会同时用到qHash函数和操作符==中。 如果我们知道age是独特的,有些时候我们本可在qHash函数中仅仅使用age。 一旦在合适的位置,使用QHash进行填充和工作跟使用QMap是一样的。 * 在使用QMap和QHash的时候,对每个键只关联一个值。 可以使用insertMulti取代insert或[]去给每个键指定多个值。 一个更方便的实现方法是使用QMultiMap或QMultiHash。它们默认支持一键多值。 要找到这样一个数组的所有键,可以使用uniqueKeys函数。 对于每一个键,调用values,返回一个QList的values取代一个单独值。 * * 当使用C/C++设计跨平台应用程序的时候,你可能受缺少静态大小的类型之苦。 比如,一个int可以是16-64位的任何一个,或更多。这取决于主机CPU架构,所使用的电脑等等。 在一些跨平台情形中这是不可接受的。比如在读取一个由不同宽度的字段值组成的文件头的时候。 待续 * 要补救不严谨的类型大小的问题,Qt声明了一系列类型。在适当的时候要确保使用它们。图片从ia32到ia64 – 使用正确的Qt类型真的很有帮助。 u前缀表示unsigned。 quintptr / qptrdiff可以用来把指针和指针差别表示成整型(比如在hash的时候)。整型在32位系统是4字节,在64位系统是8字节。 qreal在所有系统中都是的快速的实(浮点)类型。而double就是在除ARM外的所有系统,ARM中浮点比较快。 待续 * Qt并不止整型和指针这些基本类型。该框架是围绕一整套复杂值类型来建立的。 所有这些都是跨平台和最优化的,所以你使用它们的时候不需要担心。 * QVariant类是可以持有任何其他类型的值的一个类型。 你可以把QVariant看作一个智能联合。这个类有许多不可能通过一个联合来实现的属性。 这个类可以扩展到支持新的类型。不单是你的类型,还有其他Qt类型。QVariant类属于QtCore模块,而许多类型(比如QColor)属于QtGui。这意味着QtGui必须注册类型“live”。 待续 * 当以基本核心类型的方式使用QVariant的时候,你只需把值传递给QVariant的构造函数或使用=操作符指定它的值。 为再次提取值,使用toInt,toString等函数。 对于非QtCore类型,使用setValue函数去设定,并用模板va
您可能关注的文档
最近下载
- 《七律二首 送瘟神》-中职语文高二同步课件精选(高教版2023·职业模块).pptx VIP
- 高考蓝皮书·物理试题分析2025.docx VIP
- 综合实践活动 开学第一课 2024-2025学年综合实践活动开学第一课课件.pptx VIP
- 高标准农田监理大纲方案投标文件(技术方案).doc
- 小儿过敏性休克抢救流程.pptx VIP
- 液压与气压传动技术完整整套教学课件.pdf VIP
- 技术标投标文件监理大纲.doc VIP
- 2025 年成都市三年级数学秋季开学摸底考 - 冲刺卷及答案(北师大版).docx VIP
- 最新2025年《初中初三开学第一课》全文.pptx VIP
- 姓氏的由来演讲课件(张姓).pptx VIP
文档评论(0)