Seite 1 von 1

PaintEvent reagiert nicht auf Änderungen?

Verfasst: 15. April 2009 09:42
von toem
Hallo,
ich habe ein QGraficsView Object via Code erstellt und binde dies danach über

Code: Alles auswählen

QGridLayout *mainLayout = new QGridLayout;
this->setLayout(mainLayout);
mainLayout->addWidget(&myGrafik);
in mein Fenster ein. Anschließend möchte ich, je nach Programmstatus, die Hintergrundfarbe ändern und ggf. via GrafikScene Text hineinschreiben.
Doch obwohl er das PaintEvent aufruft, wird am Object nichts verändert.
Was machte ich hier ggf. falsch?

Code: Alles auswählen

void Grafik::paintEvent(QPaintEvent*)
{
    QPainter painter(this);
    painter.setBackground(QBrush(QColor(Qt::red)));

    QFont serifFont("Brush Script MT", 16, QFont::Bold);
    gsc.addText("Testtext", serifFont);
    setScene(&gsc);
}

Verfasst: 15. April 2009 10:05
von franzf
Moin

Paar Sachen:
*) Läuft dir vllt. myGrafik aus dem Scope? hier

Code: Alles auswählen

mainLayout->addWidget(&myGrafik);
hoffe ich, dass myGrafik ein member deiner Klasse ist. Ansonsten ist das Objekt einfach futsch...

*) Funktioniert Graphics View Framework gaaaanz anders, als du dir das vorstellt. Du fügst jetzt bei JEDEM repaint ein neues textitem hinzu! Und nicht nur einmal! Schau dir bitte erst nochmal in Ruhe die Beispiele zu GraphicsView an (qt4-source-> examples und demos-Verzeichnisse). Da wirst du sehen, dass paintEvent nie implementiert wird, das läuft über die Scene, mit GraphicsItems.

Grüße
Franz