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);
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();
};
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
}