今天使用了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()函数执行后,再进行绘图操作,也不会在设备上绘制了
所以大家一定要记得指定绘图设备哦