ich habe ein Problem mit der QGraphicsSvgItem-Klasse unter QT 4.3.2 (Windows).
Ich habe eine eigene Klasse von QGraphicsScene abgeleitet in der ich gerne ein QGraphicsSvgItem anzeigen lassen möchte:
tga_draw_widget.h:
Code: Alles auswählen
#ifndef TGA_DRAW_WIDGET_H_
#define TGA_DRAW_WIDGET_H_
#include <QtSvg/QtSvg>
#include <QtGui/QGraphicsScene>
#include <QtGui/QGraphicsRectItem>
#include <QtSvg/QSvgRenderer>
class tga_draw_widget : public QGraphicsScene
{
Q_OBJECT
public:
tga_draw_widget(QGraphicsView* parent = 0, Qt::WFlags flags = 0);
virtual ~tga_draw_widget();
private:
QGraphicsSvgItem *test;
QGraphicsRectItem *test2;
QSvgRenderer *renderer;
};
#endifCode: Alles auswählen
#include "tga_draw_widget.h"
#include <QtSvg/QtSvg>
#include <QtSvg/QSvgRenderer>
#include <QtCore/QString>
#include <QtGui/QGraphicsScene>
#include <QtGui/QGraphicsRectItem>
tga_draw_widget::tga_draw_widget(QGraphicsView* parent /*= 0*/, Qt::WFlags flags /*= 0*/) //: QWidget(parent, flags)
{
renderer = new QSvgRenderer();
renderer->load(QLatin1String("icons/tga/luftkuehler.svg"));
test = new QGraphicsSvgItem();
//test->show();
test->setSharedRenderer(renderer);
test->setElementId(QLatin1String("layer1"));
test2 = new QGraphicsRectItem(0, 0, 20, 20);
this->setSceneRect(QRectF(0,0,500,500));
this->addItem(test2);
this->addItem(test);
parent->setScene(this);
}
tga_draw_widget::~tga_draw_widget()
{
}
Code: Alles auswählen
void MOBILA::show_tga()
{
tga_widget = new tga_draw_widget(ui.graphicsView_tga);
ui.graphicsView_tga->show();
}stürzt das Programm ab und ich erhalte die Fehlermeldung:
QPixmap: Must construct a QApplication before a QPaintDevice
Was mache ich falsch? Die QApplication - Objekt müßte doch längst da sein da die Anwendung ja läuft bevor ich diesen Button klicke.
Es muss irgendwie an dem QGraphicsSvgItem Objekt liegen, denn wenn
ich in der Datei tga_draw_widget.cpp die Zeile
Code: Alles auswählen
this->addItem(test);Kann mir jemand einen Hinweiß geben?
Gruß,
SuperSonik