如何禁用 Qt 打印“QWidget::repaint: Recursive repaint detected”

问题描述

我正在使用 Qt6.1,我想在绘制时发送我的小部件的像素图。
我有类似的代码

void MyWidget::paintEvent(QPaintEvent*)
{
//    static bool callGrab = true;
    // m_callGrab initialize with true
    if (m_callGrab)
    {
        m_callGrab = false;
        auto pixmap = grab();
        m_callGrab = true;
        emit widgetRepainted(pixmap);
        QPainter painter(this);
        painter.drawpixmap(0,pixmap);
        painter.end();
        return;
    }

    QPainter painter(this);
    ...
    painter.end();

}

我知道在 grab()调用 paintEvent() 会导致递归,所以我使用一个变量来防止它。
它运行良好,但我在控制台中收到“QWidget::repaint: Recursive repaint detected”。太多了,向上滚动我的调试信息。
我曾尝试在我的 .pro 文件添加 DEFInes += QT_NO_WARNING_OUTPUT,但它不起作用。
我想知道是否可以禁用在控制台中打印消息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)