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.3k 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 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