[Interest] Issue painting over child widgets

Bill Crocker william.crocker at analog.com
Thu Nov 17 19:51:24 CET 2011



How about:

1 - Place a widget over the label widgets in question.

2 - setAttribute(Qt::WA_TransparentForMouseEvents,true);
     so that it becomes transparent to mouse events.

3 - Use a transparent background so you can see the widgets beneath.

4 - Draw (animation) on it whatever you want to appear floating
     above the widgets beneath and violating the otherwise rigid
     rectangular widget boundaries.

Bill


> 
> I've got a QMainWindow with 5 QLabels on it and a QPushButton.  Call the 
> QLabels "camera" and "image1" - "image4".  So the idea is that the 
> "camera" label is always showing a live feed from the digital camera.  
> When the user presses the pushbutton, a timer starts that snaps four 
> images over a period of time and puts those images in labels "image1" - 
> "image4", respectively.  This all works fine, but I wanted to make it 
> look a little more polished by adding an animation.
> 
> So what I'd like to happen is when the timer fires off to grab an image, 
> I want that image to appear to move from the "camera" label to the 
> correct "image" label. So it should appear to jump off from the "camera" 
> label, float over the top of everything, and land on the desired "image" 
> label.
> 
> So my first attempt was to override the paintEvent() of my QMainWindow, 
> create a QPainter and use drawPixmap() to draw my floating image.  It's 
> drawing my image, but the image is showing up under all the child 
> widgets, instead of over the top of everything.
> 
> Here's my paintEvent() code:
> 
> void MainWindow::paintEvent(QPaintEvent *e)
> {
>     QMainWindow::paintEvent(e);
>     if (showMovingPixmap == true)
>     {
>         QPainter painter(this);
>         painter.setClipping(false);
>         painter.drawPixmap(movingPixmapXPos,movingPixmapYPos,movingPixmap);
>         movingPixmapXPos++;
>         movingPixmapYPos++;
>     }
> }
> 
> So what am I missing?  Would it be easier to change my application to 
> have a QGraphicsView as the child widget of the QMainWindow, and do 
> everything on a QGraphicsScene?
> 
> Sean
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org <mailto:Interest at qt-project.org>
> http://lists.qt-project.org/mailman/listinfo/interest
> 





More information about the Interest mailing list