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. [SOLVED] zoom to fit in QGraphicsView
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] zoom to fit in QGraphicsView

Scheduled Pinned Locked Moved General and Desktop
13 Posts 3 Posters 13.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.
  • L Offline
    L Offline
    loladiro
    wrote on last edited by
    #4

    I think what you want to do is use a 100x100 scene, scale that to fit your graphics view with QGraphicsView::scale and then you can use the mapFromScene and mapToSence functions to get what you want. Does that help?

    1 Reply Last reply
    0
    • J Offline
      J Offline
      jk_mk
      wrote on last edited by
      #5

      I have managed to fit my scene to QGraphicsView by using these:

      @Canvas::Canvas(): QGraphicsScene(0,0,214,256)
      {
      }@

      and
      @ if (!pixmapItem) {

      QPixmap tmpmap (QPixmap(fileName, 0, Qt::AutoColor));
          pixmapItem = scene->addPixmap ( tmpmap.scaled (214,256) );
      
              ui->graphicsView_inputImage->setScene(scene);
          } else {
      

      QPixmap tmpmap (QPixmap(fileName, 0, Qt::AutoColor));
      pixmapItem->setPixmap(tmpmap.scaled (214,256));
      }@

      But still I have the problem of the real coordinates. Now in x coordiantes I am taking these (0,214) and in y coordinates I am taking these (-100,100).Could you explain how to do the mapToScene? What I should write as a press mouse event instead of these?

      @void MainWindow::mousejustpressed(int x,int y)
      {
      int k1=size_y-y;

      unsigned char value;

      QImage image(scene->sceneRect().size().toSize(), 
      QImage::Format_RGB32);
      
      QPainter painter(&image);
      scene->render(&painter);
      
      value=image.pixel(x,k1);
      

      }@

      1 Reply Last reply
      0
      • L Offline
        L Offline
        loladiro
        wrote on last edited by
        #6

        @Canvas::Canvas(): QGraphicsScene(0,0,100,100)
        {
        }
        @

        @QPixmap tmpmap (fileName, 0, Qt::AutoColor);
        if (!pixmapItem) {
        pixmapItem = scene->addPixmap (tmpmap);
        ui->graphicsView_inputImage->setScene(scene);
        ui->graphicsView_inputImage->scale(ui->graphicsView_inputImage->width()/scene->width(),
        ui->graphicsView_inputImage ->height()/scene->height());
        } else {
        pixmapItem->setPixmap(tmpmap);
        }@

        @ void MainWindow::mousejustpressed(int x,int y)
        {

         unsigned char value;
        
            QImage image(scene->sceneRect().size().toSize(),
            QImage::Format_RGB32);
        
            QPainter painter(&image);
            scene->render(&painter);
        
            value=image.pixel(ui->graphicsView_inputImage->mapToScene(x,y));
        }
        

        @

        1 Reply Last reply
        0
        • J Offline
          J Offline
          jk_mk
          wrote on last edited by
          #7

          Thanks for your reply, now I am getting to the point.But when I run this code I get one error:

          _ error C2664: 'QRgb QImage::pixel(const QPoint &) const' : cannot convert parameter 1 from 'QPointF' to 'const QPoint &'_

          Do you know how it could be solved?

          1 Reply Last reply
          0
          • L Offline
            L Offline
            loladiro
            wrote on last edited by
            #8

            Sorry I forgot the toPoint():
            @
            void MainWindow::mousejustpressed(int x,int y)
            {

            unsigned char value;

            QImage image(scene->sceneRect().size().toSize(),
            QImage::Format_RGB32);
            
            QPainter painter(&image);
            scene->render(&painter);
            
            value=image.pixel(ui->graphicsView_inputImage->mapToScene(x,y).toPoint());
            

            }@
            Hope that helps!

            1 Reply Last reply
            0
            • J Offline
              J Offline
              jk_mk
              wrote on last edited by
              #9

              Yes, this is it!

              Thanks a lot for your help

              1 Reply Last reply
              0
              • L Offline
                L Offline
                loladiro
                wrote on last edited by
                #10

                Glad I could help. And don't forget to add [Solved] to the title.

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  jk_mk
                  wrote on last edited by
                  #11

                  How do I add the [Solved]?

                  1 Reply Last reply
                  0
                  • L Offline
                    L Offline
                    loladiro
                    wrote on last edited by
                    #12

                    Click on edit in the original post and then change the title.

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      goblincoding
                      wrote on last edited by
                      #13

                      Thanks for the question and the input. I definitely got something from this thread :)

                      http://www.goblincoding.com

                      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