Breite und Höhe eines QGraphicsSvgItems in pixel festlegen

Alles rund um die Programmierung mit Qt
Antworten
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Breite und Höhe eines QGraphicsSvgItems in pixel festlegen

Beitrag 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
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Beitrag 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
Antworten