Ich habe eine QGraphicsScene Klasse implementiert, in der ich einen QGraphicsView erzeuge, welcher diese Scene anzeigt. Dem View übergebe ich als Parent ein QGraphicsView in meinem MainWindow. So kann ich meine Scene bequem in meinem MainWindow bearbeiten, Events abfangen usw.
Ich habe nun folgendes Problem. Der View zeigt komischerweise nur einen Teil meines SceneItems (Pixmap) an. Sobald ich rein zoome (den View über scale() transformiere) kann ich über meinen implementierten Drag Mode immer mehr von der Scene sehen. Irgendwann ist dann aber Schluß und ich kann mit im Dragmode nicht mehr weiter "draggen" obwohl das Bild eigentlich größer ist. Als ich die beiden Fenster (Main Window und QGraphicsScene) getrennt angezeigt habe, hat alles noch funktioniert. Hängt es vllt damit zusammen, dass der View aus dem QT Designer sich irgendwie von dem den ich meiner QGraphicsScene Klasse
MainWindow class:
Code: Alles auswählen
void MainWindow::Load(void)
{
FilePath_ = QFileDialog::getOpenFileName(
0,
"Durchsuchen",
"",
"Images (*.*)",
0,
0);
if (FilePath_.isEmpty())
return;
LoadedImage_ = QImage (FilePath_);
ImageWindow_->Init(ViewMainWindow_);
ImageWindow_->ShowImage(LoadedImage_);
}
ImageWindow class:
Code: Alles auswählen
void ImageWindow::Init(QWidget* parent /* = 0 */)
{
View_ = new QGraphicsView(parent);
View_->setDragMode(QGraphicsView::RubberBandDrag);
View_->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
}
void ImageWindow::ShowImage(QImage& image)
{
if(image.isNull())
return;
QList<QGraphicsItem *> list = this->items();
for (int i = 0; i < list.size(); i++)
{
removeItem(list[i]);
delete list[i];
}
//Kopie für Restore
Temp_ = image;
//Add the Image to the QGraphicsScene
addPixmap(QPixmap::fromImage(Temp_));
//Set the Image to background/bottom layer (ZValue=0)
QGraphicsItem *background = itemAt(0,0);
background->setZValue(0);
View_->setScene(this);
/*View_->scale(0.5,0.5);*/
View_->show();
}
grüße