其他分享
首页 > 其他分享> > Qt-双缓冲机制

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