深入研究 Block 捕获外部变量和 __block 实现原理

技术 

前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”。从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用。一句话来形容Blocks,带有自动变量(局部变量)的匿名函数。 Block在OC中

如何在Qt项目中创建插件

技术 

如何在Qt项目中创建插件 一、插件概念 插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数

QGraphicsView优化杂谈(其三、自定义Item缓存)

技术 

在我的项目中,含有大量重复的图形,重复绘制这些相同的图形无疑会增加很多多余的时间开销。QGraphicsItem自身提供了缓存的方法,我们可以通过setCacheMode()来设置,但是它为每个QGraphicsItem对象创建一个缓存,并不能让多个相同的item共享缓存,为了减少多次绘制相同ite

四叉树模板的使用

技术 

四叉树索引的基本思想是将空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。四叉树的结构比较简单,并且当空间数据对象分布比较均匀时,具有比较高的空间数据插入和查询效率。 因为项目的需要,我选择使用四叉树为二维平面

QGraphicsView优化杂谈(其二、自定义Item的管理方式)

技术 

在项目中,当我移动一个具有较多子项的图形项时,界面的刷新非常缓慢,而如果把子项的visible设置为false,则刷新速度能得到显著的提升。 通过查看qgraphicsscene.cpp源码,我们发现,当scene对item进行绘制时,会递归地对图形项进行处理,而在这个函数中,它首先判断item的v

QGraphicsView优化杂谈(其一、框架内的优化方法)

技术 

在使用QGraphicsView框架进行开发的时候,遇到了很多性能问题,本系列文章将总结一些我使用到的性能优化方案。 首先要讨论的是基于框架自身功能的优化方法,这不是本系列的重点,因此简单提一下。 调整Item的索引模式 在图元视图框架内部,各个Item的位置采用BSP Tree来进行存储。这种数据

Qt 核心机制解析(一、MOC机制)

技术 

Qt 核心机制解析(一、MOC机制) C++扩展语法 Qt对C++进行了一些扩展,主要是三个方面: 元对象系统,包含Q_OBJECT宏的文件,需要 moc 预处理。moc 把qt扩展的C++语法翻译为标准C++代码 资源系统,.qrc文件需要 rcc 进行预处理 界面系统,.ui文件需要 uic 进