关于QPainter无法绘制问题

今天使用了QPainter绘制背景以及窗体上的控件
但是所有语法都正确,资源路径也对,程序也没有报错,也是写在paintevent里的,但是就是不见影,这是怎么回事呢
看下原来的代码

    QPainter pal;
    QBrush brush(QPixmap(":/images/rule/gameRule.png"));    
    pal.setBrush(brush);
    pal.drawRect(0,0,RULE_WINDOW_WIDTH,RULE_WINDOW_HEIGHT);
    QWidget::paintEvent(e);

经过我不断的debug尝试,发现原来QPainter类构建的时候没有设置绘画设备,我的天,在创建QPainter的时候可以在构造参数中传递绘画设备指针* QPaintDevice,大多情况下就是this,因为是在窗体上绘制嘛,QWidght也继承于QPaintDevice,其中QPaintDevice主要分为三种:QPixmap、QImage和QPicture
改进后:

   QPainter pal(this);
    QBrush brush(QPixmap(":/images/rule/gameRule.png"));    
    pal.setBrush(brush);
    pal.drawRect(0,0,RULE_WINDOW_WIDTH,RULE_WINDOW_HEIGHT);
    QWidget::paintEvent(e);

还有一种方式指定绘图设备,就是QPainter的begin函数和end函数
QPainter p;
p.begin(设备指针);
(进行绘图操作)
p.end(设备指针);

end()函数执行后,再进行绘图操作,也不会在设备上绘制了
所以大家一定要记得指定绘图设备哦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值