Breite herausfinden bei QGraphicsSvgItem

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Breite herausfinden bei QGraphicsSvgItem

Beitrag 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?
Dateianhänge
Camera.txt
Die Datei in Camera.svg umbenennen.
(58.96 KiB) 109-mal heruntergeladen
Antworten