QGraphicsPixmaItem wird nicht in QGraphicsScene gepaintet

Alles rund um die Programmierung mit Qt
Antworten
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

QGraphicsPixmaItem wird nicht in QGraphicsScene gepaintet

Beitrag von theprogrammer12 »

So sieht mein Code aus:

Code: Alles auswählen

    g_scene = new QGraphicsScene();
    g_scene->setBackgroundBrush(QColor(255, 255, 255));
    pixmap = new QPixmap();
    item = new QGraphicsPixmapItem();
    item->setPixmap(*pixmap);
    g_scene->addItem(item);
    g_scene->setForegroundBrush(QColor(0, 0, 0));
    setScene(g_scene);
    painter = new QPainter();

Code: Alles auswählen

pixmap->load("./test.jpg");
    item->setPixmap(*pixmap);
Was ist daran falsch? Ich kann bei der QGraphicsScene die Hintergrundfarbe setzen, also wird sie ordentlich dargestellt, nur das Item macht Probleme
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QPixmap::load() gibt bei Fehler false zurück wenn das Bild nicht geladen werde konnte was wohl der Fall ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

Beitrag von theprogrammer12 »

Nein, die Datei existiert und ich hab auch die Rechte, die datei zu lesen.
Mir ist gerade aufgefallen, dass g_scene in der Paint-Funktion gar nicht existiert! Wie kann das sein?
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

Beitrag von theprogrammer12 »

Das Programm segfaultet dann, wenn ich die Koordinaten setzen will.
Es hat vorher nur deshalb nichts gemacht, weil ich in meine Paint Funktion

Code: Alles auswählen

if(!g_scene)
     return;
geschrieben habe
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

Beitrag von theprogrammer12 »

ok hab den fehler gefunden. Jetzt wird die Datei geladen, aber es wird immer noch nichts angezeigt
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Also gibt QPixmap::load() nun true zurück?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

theprogrammer12 hat geschrieben:Das Programm segfaultet dann, wenn ich die Koordinaten setzen will.
Es hat vorher nur deshalb nichts gemacht, weil ich in meine Paint Funktion

Code: Alles auswählen

if(!g_scene)
     return;
geschrieben habe
Kannst du mal bitte genauer beschreiben, wie das ganze bei dir aufgebaut ist?
Wo steht der Code, den du da oben gezeigt hast?
Von welcher "Paint-Funktion" sprichst du? Von welcher Klasse?
Das sind irgendwie alles zu wenige Angaben.
Außerdem: Warum QPixmap als Pointer?

Zeig mal bitte skizziert deine involvierten Klassen, am besten wäre ein kompilierbares Minimalbeispiel, welches den Fehler enthält. Also nicht Code posten der funktioniert...
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

Beitrag von theprogrammer12 »

Also das ist so:

ich habe ein Klasse (abgeleitet von einem QGraphicsView), um Dinge darzustellen. Sie hat eine Create-Funktion, die die Ausgabe initialisiert und eine Paint Funktion, die das ganze paintet.

Ich kann über die QGraphicsScene einwandfrei malen, aber das ist sehr langsam.
theprogrammer12
Beiträge: 38
Registriert: 12. August 2009 20:02

Beitrag von theprogrammer12 »

OK ich habs. Ich hab den ForegroundBrush des QGraphicsScene auf eine Farbe gesetzt.
Aber eins hab ich noch:
Ich hab das QPixmap jetzt nicht mehr als Pointer definiert. Ok, aber wie ändere ich jetzt die Größe?
Ich habs vorläufig so gemacht:

Code: Alles auswählen

pixmap = QPixmap(max_width, max_height)
Gibt es dafür nicht eine schönere Lösung?
Antworten