微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何禁用 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 举报,一经查实,本站将立刻删除。