How to draw over an old picture in QGraphicsScene
-
-
But in the example that I showed you drawing eventfilter occurs, and if you do so, then paintEvent works only a couple of times and then for some reason no longer works.
void MainWindow::paintEvent(QPaintEvent *event) { qDebug()<<"paintEvent"; }@Mikeeeeee After getting new coordinates you can call https://doc.qt.io/qt-5/qwidget.html#update to trigger paint event.
-
It turns out to draw in eventFilter, but it was necessary to add this line to the constructor.
myPixmap = QPixmap(myImageViewer->image.width(),myImageViewer->image.height());I draw so:
bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if(obj == myImageViewer and event->type() == QEvent::MouseButtonPress) { qDebug()<<" QEvent::MouseButtonPress"; QMouseEvent *mous = (QMouseEvent*)event; QPainter p(&myPixmap); p.setPen(myPen); p.drawPoint(mous->pos()); p.end(); lastPoint = mous->pos(); myImageViewer->imageLabel->setPixmap(myPixmap); } }But when drawing the picture disappears and the screen turns black. How to fix? Can I set the drawing on the QImage overlay(":/Images/Images/mapTop.png");?
-
myPixmap.fill(Qt::transparent);
-
Thanks. Do so:
myPixmap = QPixmap(myImageViewer->image.width(),myImageViewer->image.height()); myPixmap.fill(Qt::transparent); myPixmap = QPixmap(":/Images/Images/mapTop.png");But after drawing the picture disappears :
myImageViewer->setImage(mapImage);How to get myPixmap the images:":/Images/Images/mapMain.png" and ":/Images/Images/mapTop.png" , but draw only on:
":/Images/Images/mapTop.png"? -
Thanks. Do so:
myPixmap = QPixmap(myImageViewer->image.width(),myImageViewer->image.height()); myPixmap.fill(Qt::transparent); myPixmap = QPixmap(":/Images/Images/mapTop.png");But after drawing the picture disappears :
myImageViewer->setImage(mapImage);How to get myPixmap the images:":/Images/Images/mapMain.png" and ":/Images/Images/mapTop.png" , but draw only on:
":/Images/Images/mapTop.png"?@Mikeeeeee
You mean draw myPixmap on mapImage and then
show the combined image with myImageViewer->setImage(mapImage); ?
Thats like before where we combined them. -
@Mikeeeeee Please, read the documentation.
QBitmap::fromImage is a static method. You're using it wrong.
QPixmap::setMask takes a const reference to a QBitmap, not a pointer.