QT双缓冲机制
双缓冲机制介绍
双缓冲机制,是指在控件绘制时,会首先将要绘制的内容绘制在一个图片中,再将图片一次性地绘制到控件上。早期Qt版本,如果直接在控件上进行绘制工作,那么在控件重绘时会产生闪烁的现象,重绘越频繁闪烁越明显。
双缓冲机制可以有效的消除这一现象。自Qt5版本后,QWidget
控件已经能够自动处理闪烁问题,虽然在控件上直接绘图时不用再担心闪烁问题,但是双缓冲机制很多场合仍然有其用武之地。比如,当需绘制的内容比较复杂并且需要频繁刷新,或者每次只需要绘制整个控件的一小部分时,依然采用双缓冲机制是需要的。
以下通过介绍实现一个简单的绘图工具,来介绍双缓冲机制的实现。图像先绘制在pixmap上,再将整个pixmap绘制到中央部件的绘图区。
QMainWindow
对象作为主窗口,QToolBar
对象作为工具栏,QWidget
对象作为主窗口的中央窗体,也就是绘图区。通过对绘图区鼠标事件的重定义,来实现绘图功能。