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 Dimple
    #4

    @mjjj as u said i hv changed
    copyImage=newImage.copy(myRect);

    but here wat happens after dragged image,, its showing QLabel is completely black

    mrjjM 1 Reply Last reply
    0
    • D Dimple

      @mjjj as u said i hv changed
      copyImage=newImage.copy(myRect);

      but here wat happens after dragged image,, its showing QLabel is completely black

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

      @Dimple
      you mean when you drag the image to be cropped to the label ?

      1 Reply Last reply
      0
      • 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