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 erstellQPainter
fails, 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?