QPaintEvent in abgeleitenen Klassen

Alles rund um die Programmierung mit Qt
Antworten
Fuxi
Beiträge: 25
Registriert: 24. Mai 2011 20:58

QPaintEvent in abgeleitenen Klassen

Beitrag von Fuxi »

Hallo

Ich bin Anfänger in Qt.

Kann man in einer abgeleitener Klasse nicht selber dazu malen ?

Ich habe z.B. eine neue Klasse Anzeige von QLabel abgeleitet.

Jetzt möchte ich selber was dazu malen.

Sobald ich aber QPaintEvent einbaue, wird das original Label nicht mehr angezeigt.

Oder ist das mal wieder der typische Anfängerfehler.

Vielen Dank
Herbert
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Das ist ein typischer Fehler, aber eher in die Kategorie "C++ Grundlagen" einzuordnen.
Wenn man ableitet und in einer eigenen Funktion die Funktionalität der Basisklasse erhalten möchte, muss man die an geeigneter Stelle in der Funktion einfach aufrufen:

Code: Alles auswählen

#include <QLabel>
#include <QApplication>
#include <QPainter>
#include <QPixmap>

class QPaintEvent;

class Label : public QLabel {
  void paintEvent(QPaintEvent* e) {
    QLabel::paintEvent(e);
    QPainter p(this);
    p.setPen(Qt::black);
    p.drawText(10, 20, "Hello. world");
  }
};

int main(int argc, char** argv) {
  QApplication app(argc, argv);
  Label l;
  l.setPixmap(QPixmap("/Pfad/zum/Bild.jpg"));
  l.show();
  return app.exec();
}
Du kannst mal das "QLabel::paintEvent(e);" hinter die eigenen Zeichenanweisungen schieben und schauen was passiert :)
Antworten