سؤال

I have a stacked widget on which I have a QLabel. I display an image on this label. I want to zoom and pan this image and I am trying to use the QGraphicsView technique. However a new window opens. This is what I am doing.

 scene = new QGraphicsScene(this);
 view = new QGraphicsView(this);
 QPixmap pix("/root/Image);
 label->setPixmap(pix);
 scene->addWidget(label);
 view->setScene(scene);
 view->setDragMode(QGraphicsView::scrollHandDrag);
 view->show();

Can someone please suggest me what I should do. I want the label to act like the QGraphicsView.

Thank You :)

هل كانت مفيدة؟

المحلول

You create a scene and view and add the label to the scene, then tell the view to show itself with: -

view->show()

If, as you state, you want the QGraphicsView on the label, don't add the label to the scene, but add the QGraphicsView to the label: -

QLabel* pLabel = new QLabel(mainWindow); // setting mainWindow as the parent
QGraphicsView* pView = new QGraphicsView(pLabel) // set the label as the parent of the view.

You do not need to call show, as the label will handle that for you, assuming the label is on a Widget that is already displayed.

Now, instead of setting the pixmap on the label, create a pixmap in the scene with: -

pScene->addPixmap(pixmap);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top