paintEvent в производном классе QTableView: устройство рисования возвратило двигатель == 0, тип: 1

Как продолжениеИндикатор загрузки Qt по анимированному изображению (он же preloader) или альтернатива? Я пытаюсь рисовать внутриQTableView, Но когда я инициализируюQPainter Я получаю следующие предупреждения.

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

Вот код (так ответьте,с кнопкой похоже на работу):

    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 
    }

Я удивлен, создаваяQPainterне получается, так почему это так. Что я делаю неправильно?

Упрощенная версия по-прежнему дает предупреждение

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

Предупреждение (конечно) исчезло, когда я закомментировалQPainterтак что это действительно кажется основной причиной, но почему?

Ответы на вопрос(1)

Ваш ответ на вопрос