paintEvent in der von QTableView abgeleiteten Klasse: Paint Device Return Engine == 0, Typ: 1

Als Folge vonQt Ladeanzeige durch animiertes Bild (aka Preloader) oder alternativ? Ich versuche in einem @ zu malQTableView. Aber wenn ich das @ initialisieQPainter Ich erhalte die folgenden Warnungen.

QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1

Hier ist der Code (SO Antwort,mit einem Knopf scheint es zu funktionieren):

    void CDerivedFromQTableView::paintEvent(QPaintEvent *event)
    {
        QTableView::paintEvent(event); // draw original content
        QPainter p(this); // Problem: QPainter::begin: Paint device returned engine == 0, type: 1
        const QPixmap pm(QPixmap::grabWidget(this->m_loadIndicator));
        QPoint middle = this->geometry().center();
        int x = middle.x() - pm.width() / 2;
        int y = middle.y() - pm.height() / 2;
        p.drawPixmap(QPoint(x, y), pm); // draw load indicator inside QTableView 
    }

ch bin überrascht, das @ zu erstellQPainterfails, also warum ist das so? Was mache ich falsch

Die vereinfachte Version gibt noch die Warnung

        QPainter p(this);
        QTableView::paintEvent(event);
        return;

Warning (natürlich) weg, wenn ich auskommentiereQPainter, also scheint es wirklich die Grundursache zu sein, aber warum?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage