Seite 1 von 1

QPaintEvent in abgeleitenen Klassen

Verfasst: 13. Juni 2011 10:01
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

Verfasst: 13. Juni 2011 10:45
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 :)