Problem mit QGraphicsSvgItem
Verfasst: 3. Dezember 2007 14:15
Hallo Leute,
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:
tga_draw_widget.cpp:
In einer anderen Klasse wird diese Scene dann einem QGraphicsView zugewiesen. Diese Zuweisung findet in einem Slot statt und geschieht damit erst bei einem Klick auf den entsprechenden Button.
Wenn ich nun im Programm allerdings auf diesen Button klicke
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 auskommentiere ,und das SvgItem damit nicht angezeigt wird, funktioniert alles bestens. - sprich das QGraphicsRectItem wird angezeigt
Kann mir jemand einen Hinweiß geben?
Gruß,
SuperSonik
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