画图在哪里实现实际上都不重要,这依赖于设计者的想法,重要的是要把图形在正确的响应时间内映射到绘图设备上,也可能是一个虚拟的绘图设备。
paintEvent只不过是一个事件响应函数而已,它提供了一种功能,就是在窗口需要刷新的时候把你期望的界面绘制出来,我们可以利用它,但一定要注意效率,避免隐式循环调用。
这里要理解两个概念,一个是事件机制,一个是绘图映射。只要理解他们了,万变不离其踪。
所有事件都是由操作系统提供的,毕竟我们还是在操作系统之上编写程序,由操作系统分发给不同的应用程序的,然后应用程序通过操作系统函数获取事件数据再做出响应,这样每个应用程序就会需要这样一个响应函数,也就是事件循环,针对不同的事件类型,又可能会定义不同的事件函数,paintEvent就是窗口部件的事件函数之一,完成一次重画事件中图形到设备的映射,当然这个映射不是简单的一步操作,其中还有很多其他类的支持。其次还需要一点算法方面的知识,毕竟绘图是一件很耗费系统时间的事情,所以要讲点技巧,比如QT的双缓冲设计。
这里又提到了线程,又是一大堆麻烦的事情,从哪儿讲呢?以后慢慢整理之后再说吧
传播一点基础知识,可能偏离楼主的问题了,大家勿笑(大家:大方之家,不记得那段古文中出现的词了)