qt程序运行时绘图出现错误

问题

QWidget::paintEngine: Should no longer be called

QPainter::begin: Paint device returned engine == 0, type: 1

QPainter::setPen: Painter not active

QPainter::drawPoints: Painter not active

程序运行的时候出现上述问题,说明此时下端代码并未被触发。

void Form::paintBorder(QWidget *widget)
{
    if (!m_isPress) {
        return ;
    }
    QPainter painter(widget);
    QPen pen;
    QColor color;
    if (m_isNudge) {
        QColor cl(Qt::red);
        color = cl;
        pen.setStyle(Qt::DashDotLine);
    }else {
        QColor cl(Qt::darkBlue);
        color = cl;
        pen.setStyle(Qt::SolidLine);
    }

    pen.setColor(color);
    pen.setWidth(6);
    painter.setPen(pen);
    QRect rect = this->rect();
    painter.setRenderHint(QPainter::Antialiasing);
    painter.drawRect(rect.x(),rect.y(),rect.width(),rect.height());
}

上述代码的执行,必须有某一个操作触发了重绘函数。这时QPainter才会被激活。像移动的窗口,会触发重绘函数对窗口重绘,当然应该只是对变化了部分进行重绘。像窗口被遮住,也会触发重绘函数对没有遮住的部分进行重绘。以上是本人的理解,欢迎吐槽。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩上风骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值