Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QPixmap with transparent background
Forum Updated to NodeBB v4.3 + New Features

QPixmap with transparent background

Scheduled Pinned Locked Moved Solved General and Desktop
11 Posts 4 Posters 4.9k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • PerdrixP Offline
    PerdrixP Offline
    Perdrix
    wrote on last edited by
    #2

    I even tried moving the pixmap from being a class instance variable to a local variable
    in drawOnPixmap, omitting the eraseRect() call and adding the calls

    imageView->setOverlayPixmap(pixmap);
    imageView->update();
    

    to the end of mf.

    but that didn't work either :(

    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #3

      Hi
      what type is imageView. ?
      Some widgets like QStacked and QScrollArea have a background of their own.

      PerdrixP 1 Reply Last reply
      0
      • mrjjM mrjj

        Hi
        what type is imageView. ?
        Some widgets like QStacked and QScrollArea have a background of their own.

        PerdrixP Offline
        PerdrixP Offline
        Perdrix
        wrote on last edited by Perdrix
        #4

        @mrjj It is a direct sub-class of QWidget. In the paint mf of ImageView, I'm just overlaying the pixmap that was set by setOverlayPixmap ...

        I tried without the use of the overlay pixmap - instead using the paint mf of the overlaying widget to draw over the underlying image but had the same problem :(
        David

        mrjjM 1 Reply Last reply
        0
        • PerdrixP Perdrix

          @mrjj It is a direct sub-class of QWidget. In the paint mf of ImageView, I'm just overlaying the pixmap that was set by setOverlayPixmap ...

          I tried without the use of the overlay pixmap - instead using the paint mf of the overlaying widget to draw over the underlying image but had the same problem :(
          David

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #5

          @Perdrix

          What platform ?
          I tried fast on Windows and it does draw it transparent.

          alt text

          Also have you tested your image with a QLabel that it does show up transparent ?

          1 Reply Last reply
          0
          • PerdrixP Offline
            PerdrixP Offline
            Perdrix
            wrote on last edited by
            #6

            I'm not building the pixmap from a png, it's all done with QPainter. - that may make all the difference.

            I am doing this on Windows

            D.

            mrjjM 1 Reply Last reply
            0
            • PerdrixP Perdrix

              I'm not building the pixmap from a png, it's all done with QPainter. - that may make all the difference.

              I am doing this on Windows

              D.

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by mrjj
              #7

              @Perdrix
              well it might
              do you do
              pix.fill(Qt::transparent);
              to have it transparent from the beginning. ?

              1 Reply Last reply
              3
              • PerdrixP Offline
                PerdrixP Offline
                Perdrix
                wrote on last edited by Perdrix
                #8

                @Perdrix said in QPixmap with transparent background:

                painter.fillRect(rcClient, brush);

                No - see code posted above - I used painter.fillRect using a transparent brush

                C 1 Reply Last reply
                0
                • PerdrixP Perdrix

                  @Perdrix said in QPixmap with transparent background:

                  painter.fillRect(rcClient, brush);

                  No - see code posted above - I used painter.fillRect using a transparent brush

                  C Offline
                  C Offline
                  candy76041820
                  wrote on last edited by
                  #9

                  @Perdrix Perhaps filling a rect with transparent brush means painting a transparent rect onto the canvas, which actually is a no-op.

                  1 Reply Last reply
                  0
                  • Chris KawaC Offline
                    Chris KawaC Offline
                    Chris Kawa
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    The default mode for painter is to blend the painted shape with existing pixels using the alpha channel, so as @candy76041820 said - filling a rectangle with transparency does nothing.

                    To replace the contents of that rectangle instead of blending you have to change composition mode to QPainter::CompositionMode_Source, or, simpler, as @mrjj suggested use fill() method of QPixmap.

                    1 Reply Last reply
                    3
                    • PerdrixP Offline
                      PerdrixP Offline
                      Perdrix
                      wrote on last edited by Perdrix
                      #11

                      Using pixmap.fill(Qt::transparent); solved the problem

                      Thanks a lot

                      1 Reply Last reply
                      2

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved