Seite 1 von 1

Breite und Höhe eines QGraphicsSvgItems in pixel festlegen

Verfasst: 30. August 2010 04:14
von dead-raven
Hallo,

würde gerne die Größe eines QGraphicsSvgItems in Pixel festlegen, relativ zur View, wenn der Skalierungsfaktor 1,0 beträgt.

Hintergrund ist folgender: Die View zeigt nicht nur SvgItems, sondern auch PixmapItems an. Die PixmapItems bekommen scaled() eine feste Größe in Pixel zugeordnet. An diese Größe möchte ich auch die SvgItems angleichen.

Beispielcode von PixmapItems:

Code: Alles auswählen

QGraphicsPixmapItem *item = new QGraphicsPixmapItem(this);
graphicsScene->addItem(item);
pixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio)
item->setPixmap(pixmap);
Gruß
DeaD-RaveN

Verfasst: 7. September 2010 01:36
von dead-raven
nachdem ich keine vorgefertigte Funktion finden konnte, möchte ich euch meine selbstgebastelte nicht vorenthalten:

Code: Alles auswählen

void DndGraphicsSvgItem::setSize(int width, int height)
{
    qreal widthSoll = qreal(width);
    qreal heightSoll = qreal(height);
    qreal widthIst = this->boundingRect().width();
    qreal heightIst = this->boundingRect().height();
    qreal scaleFactor = 1;

    // Bildgröße bekommt maximal die übergebenen Parameter als Größe. Entspricht die Höhe nicht der Breite, so wird die größere Seite angepasst
    if (widthSoll/widthIst >= heightSoll/heightIst){
        scaleFactor = widthSoll/widthIst;
        this->setScale(scaleFactor);
    }
    else{
        scaleFactor = heightSoll/heightIst;
        this->setScale(scaleFactor);
    }
    return;
}
DeaD-RaveN