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. cropping image on QLabel using mouseEvent
Forum Updated to NodeBB v4.3 + New Features

cropping image on QLabel using mouseEvent

Scheduled Pinned Locked Moved Unsolved General and Desktop
16 Posts 4 Posters 2.5k Views 1 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.
  • D Offline
    D Offline
    Dimple
    wrote on last edited by
    #6

    yeah ,,after dragged the image ,,its showing QLabel is completely black (not shows image after cropped the image)

    1 Reply Last reply
    0
    • D Offline
      D Offline
      Dimple
      wrote on last edited by Dimple
      #7

      0_1545661635737_img2.PNG

      0_1545661348348_img.PNG

      mrjjM 1 Reply Last reply
      0
      • D Dimple

        0_1545661635737_img2.PNG

        0_1545661348348_img.PNG

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

        @Dimple
        I think the mapping of the coordinates are a bit off so the rect copied is outside
        the coordinates for label holding image.

        1 Reply Last reply
        0
        • D Offline
          D Offline
          Dimple
          wrote on last edited by
          #9

          can u please send me correct code ,,,im not getting

          mrjjM 1 Reply Last reply
          0
          • D Dimple

            can u please send me correct code ,,,im not getting

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

            @Dimple
            the calculations for the actual rect to copy

            a = ui->label->mapFromGlobal(a);
            b = ui->label->mapFromGlobal(b);
            
            double sx = ui->label->rect().width();
            double sy = ui->label->rect().height();
            
            sx = OriginalPix.width() / sx;
            sy = OriginalPix.height() / sy;
            
            a.setX(int(a.x() * sx));
            b.setX(int(b.x() * sx));
            a.setX(int(a.x() * sy));
            b.setX(int(b.x() * sy));
            
            QRect myRect(a, b); // im not sure this rect is as intended.
            

            try use qDebug to write it out and inspect the values.
            like
            qDebug() << " crop rect" << myRect;

            F 1 Reply Last reply
            0
            • mrjjM mrjj

              @Dimple
              the calculations for the actual rect to copy

              a = ui->label->mapFromGlobal(a);
              b = ui->label->mapFromGlobal(b);
              
              double sx = ui->label->rect().width();
              double sy = ui->label->rect().height();
              
              sx = OriginalPix.width() / sx;
              sy = OriginalPix.height() / sy;
              
              a.setX(int(a.x() * sx));
              b.setX(int(b.x() * sx));
              a.setX(int(a.x() * sy));
              b.setX(int(b.x() * sy));
              
              QRect myRect(a, b); // im not sure this rect is as intended.
              

              try use qDebug to write it out and inspect the values.
              like
              qDebug() << " crop rect" << myRect;

              F Offline
              F Offline
              fouad2130
              Banned
              wrote on last edited by fouad2130
              #11
              This post is deleted!
              1 Reply Last reply
              0
              • D Offline
                D Offline
                Dimple
                wrote on last edited by
                #12

                @mrjj

                a.setX(int(a.x() * sx));
                b.setX(int(b.x() * sx));
                a.setY(int(a.y() * sy));
                b.setY(int(b.y() * sy));

                QRect myRect(a,b);

                QImage newImage;
                newImage = OriginalPix.toImage();
                QImage copyImage;
                copyImage=newImage.copy(myRect);
                ui->label->setPixmap(QPixmap::fromImage(copyImage));
                ui->label->setScaledContents(true);
                ui->label->repaint();

                now its working ,,i can crop the image but after cropped the image ,,,if i click on cropped image ,,image is disappearing?

                mrjjM 1 Reply Last reply
                0
                • D Dimple

                  @mrjj

                  a.setX(int(a.x() * sx));
                  b.setX(int(b.x() * sx));
                  a.setY(int(a.y() * sy));
                  b.setY(int(b.y() * sy));

                  QRect myRect(a,b);

                  QImage newImage;
                  newImage = OriginalPix.toImage();
                  QImage copyImage;
                  copyImage=newImage.copy(myRect);
                  ui->label->setPixmap(QPixmap::fromImage(copyImage));
                  ui->label->setScaledContents(true);
                  ui->label->repaint();

                  now its working ,,i can crop the image but after cropped the image ,,,if i click on cropped image ,,image is disappearing?

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

                  @Dimple
                  Hi
                  clicking the label triggers mousePressEvent and mouseReleaseEvent
                  so you will grab a very small /invalid area. ( thats my guess )

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    Dimple
                    wrote on last edited by
                    #14

                    @mrjj said in cropping image on QLabel using mouseEvent:

                    triggers

                    ok i ll change some functionality ,,Thanks for ur help

                    mrjjM 1 Reply Last reply
                    0
                    • D Dimple

                      @mrjj said in cropping image on QLabel using mouseEvent:

                      triggers

                      ok i ll change some functionality ,,Thanks for ur help

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

                      @Dimple
                      Hi
                      i imagine a bool flag to tell it its in crop mode , else it will just ignore the mosuePress code etc.

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        Dimple
                        wrote on last edited by
                        #16

                        @mrjj

                        ok i ll check it out,,,thanks

                        1 Reply Last reply
                        0

                        • Login

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