Seite 1 von 1

QPixmap rotieren und skalieren

Verfasst: 7. Juli 2009 16:13
von QAir
Hallo nochmal,
ich möchte in meiner QGraphicsView Bilder zeichnen, und dass die auch rotiert und scaliert werden wenn man die View rotiert und scaliert.
Ich habe folgendes Versucht

Code: Alles auswählen

QLabel *label = new QLabel(this);
QPixmap image("./images/meinBild.png");

QTransform m;
m.scale(0.25,0.25);
m.rotate(-90);
image.transformed(m);

label->setPixmap(image);
label->move(100,100);
label->resize(20,20);
label->setScaledContents(true);
label->setAttribute(Qt::WA_DeleteOnClose);
scene->addWidget(label);
Die Bilder skalieren und rotieren aber nicht. Kenn jemand eine Lösung. Ich wäre euch sehr dankbar

Verfasst: 7. Juli 2009 16:22
von QAir
Oder anders:
Ich könnte ein QGraphicsItem nehmen statt QLabel. Aber wie setzt man ein QPixMap in einem QGraphicsItem??? Denn QGraphicsItem hat keine Methode setPixmap() oder ähnliches...

Verfasst: 7. Juli 2009 16:30
von upsala
Wenn man den Rückgabewert von QImage::transformed() wegwirft hat man auch nichts passendes.

QGraphcisScene hat was mit einem QPixmap

Verfasst: 7. Juli 2009 16:53
von sven-kt
QAir hat geschrieben:Aber wie setzt man ein QPixMap in einem QGraphicsItem??? Denn QGraphicsItem hat keine Methode setPixmap() oder ähnliches...
Hätte ich auch gern gewusst!

Oder ist QGraphicsPixmapItem da alleine für zuständig?

Verfasst: 7. Juli 2009 16:56
von franzf
sven-kt hat geschrieben:
QAir hat geschrieben:Aber wie setzt man ein QPixMap in einem QGraphicsItem??? Denn QGraphicsItem hat keine Methode setPixmap() oder ähnliches...
Hätte ich auch gern gewusst!

Oder ist QGraphicsPixmapItem da alleine für zuständig?
Ja. Entweder selber erstellen, oder einfach ein Pixmap auf die Scene legen.
QGraphicsPixmapItem * QGraphicsScene::addPixmap ( const QPixmap & pixmap )

Verfasst: 8. Juli 2009 11:39
von QAir
franzf hat geschrieben:... oder einfach ein Pixmap auf die Scene legen.
aber mit scene->addPixmap kann man keine Position eingeben!!!
Wieso ist das so?????? Ich verstehe das gar nicht!!!

Jedenfalls habe ich das jetzt wie folgt gelöst:

Code: Alles auswählen

QPixmap pixmap("./images/meinBild.png");
QGraphicsPixmapItem* item = new  QGraphicsPixmapItem();
item->setPixmap(pixmap);
item->setPos(100,100);
scene->addItem(item);
Vielen Dank für eure Hinweise :-)