Seite 1 von 1

Breite herausfinden bei QGraphicsSvgItem

Verfasst: 1. Juli 2010 20:26
von anno1988
Hallo,

ich habe ein Problem mit dem QGraphicsSvgItem.

Ich skaliere das item.

Code: Alles auswählen



QGraphicsSvgItem *item;

item = new QGraphicsSvgItem();

item->scale(0.9, 0.9);


Doch ich finde nicht heraus was die Breite nach der Skalierung ist. Die Skalierung hat ja auf "boundingRect().width()" und "boundingRect().height()" keinen Einfluss.

Da gibt es zwar die Methoden mapFromItem. Wenn ich dann allerdings das damit versuche die neue Breite bzw. Höhe herauszufinden bekomme ich immer die Originalgröße zurück.


So habe ich es mal versucht. Allerdings aber ohne Erfolg.

mainwindow.h

Code: Alles auswählen

 
#include <QMainWindow>
#include <QGraphicsScene>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);
		QGraphicsScene *scene;

private:
    Ui::MainWindow *ui;

	private slots:
		void click123();
};

mainwindow.cpp

Code: Alles auswählen


#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QGraphicsSvgItem>
#include <QGraphicsRectItem>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

		scene = new QGraphicsScene();

		ui->graphicsView->setScene(scene);

		connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(click123()));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::click123() {

	QGraphicsSvgItem *item = new QGraphicsSvgItem("C:/Camera.svg");

	item->setPos(80, 80);
	item->scale(0.9, 0.9);

	scene->addItem(item);

	QGraphicsRectItem *rect = new QGraphicsRectItem();

	rect->setParentItem(item);

	QPolygonF mapped;

	mapped = rect->mapFromParent(0, 0, 472, 459); //472 x 459 is the size of Camera.svg file

	int width = mapped.boundingRect().width(); //Rückgabe von 472 anstatt 424.9

	int height = mapped.boundingRect().height(); //Rückgabe von 459 anstatt 413

}

Wie bekomme ich denn da die neue Größe heraus?