class DoubleBufferedWidget : public QWidget {
Q_OBJECT
public:
DoubleBufferedWidget(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override {
if (m_pixmap.isNull()) {
return;
}
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QRect rect = geometry();
int w = rect.width();
int h = rect.height();
m_pixmap = m_pixmap.scaled(w, h, Qt::KeepAspectRatio);
QPixmap buffer(m_pixmap.size());
QPainter p(&buffer);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawPixmap(0, 0, m_pixmap);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.end();
painter.drawPixmap(0, 0, buffer);
}
private:
QPixmap m_pixmap;
};
DoubleBufferedWidget::DoubleBufferedWidget(QWidget *parent) : QWidget(parent)
{
setFixedSize(parent->size());
m_pixmap.load("C:/Users/86189/Pictures/xbcl.jpg");
}