Qt-双缓冲机制
作者:互联网
双缓冲机制:在绘制控件时,首先将要绘制的内容绘制到一个图片中(QPixmap或其他),再将图片一次性的绘制到控件上。
双缓冲机制可以解决早期Qt控件重绘频繁闪烁的问题,Qt5以后解决了,Qt控件自动处理闪烁问题。但是双缓冲机制再许多场合仍然有用武之地。当需要绘制的内容比较复杂且需要频繁刷新时,或者每次只需要刷新整个控件的一小部分时,仍应该尽量采用双缓冲机制。
1 class MyWidget: public QWidget 2 { 3 ...... 4 QPixmap* pix; 5 } 6 7 MyWidget::MyWidget 8 :QWidget(parent) 9 { 10 ,... 11 pix = new QPixmap(this->size()); 12 pix->fill(Qt::white): 13 .... 14 } 15 16 void MyWidget::mouseMoveEvent(QMoveEvent* e) 17 { 18 ... 19 painter->begin(pix); 20 painter->setPen(pen); 21 painter->drawLine(startPos, e->pos()); //根据鼠标移动画线 22 painter->end(); 23 starPos = e->pos(); 24 update(); 25 } 26 27 void MyWidget::paintEvent(QPaintEvent* e) 28 { 29 QPainter p(this); 30 p.drawPixmap(QPoint(0,0), *pix); 31 }
标签:控件,Qt,缓冲,pix,机制,MyWidget,painter 来源: https://www.cnblogs.com/fengye2021/p/15362663.html