Qt : QScroolArea paintEvent
I want to create paintEvent in QScroolArea. This is a tutorial how to implement QScroolArea paintEvent method. I have confused how to create drawingEvent in the QScroolArea. So, after searching and try some of method, I create tutorial how QScroolArea implement paintEvent. This is the steps how to implemnt QScroolArea paintEvent method :
- Create a widget. Implement paintEvent mehtod in this widget.
- Create QScroolArea. add the last widget int this QScroorArea.
This is a simple method how QScroolArea implement paintEvent method.
void drawingWidget::paintEvent(QPaintEvent *event) { QStylePainter painter(this); painter.drawPixmap(0, 0, pixmap); } void drawingWidget::drawingData() { pixmap = QPixmap(ncol, nrow); //set widget size resize(ncol, nrow); //resize drawing Widget size pixmap.fill(this, 0, 0); QPainter paint(&pixmap); //create painter object paint.initFrom(this); QLinearGradient linearGrad(0.0, 0.0, nrow, ncol); //create linear gradient linearGrad.setColorAt(0.2, Qt::blue); linearGrad.setColorAt(1, Qt::green); paint.setBrush(linearGrad); paint.fillRect(rect(), linearGrad); update(); }
I am create a method drawingData to draw a QLinearGradient at the widget. I am adding paintEvent method in the widget, so when we change size (resize window), the program will automatic redrawing picture. This is the output from this QScroolArea paintEvent method :
You can get the complete code how to implementated QScroolArea paintEvent at here