QWidget
QWidget是一个多重继承类,继承了QObject和QPaintDevice两个类。
QPainterDevice
QPainter
QPaintEvent
paintEvent 的调用时间:
1、在构建窗体的时候执行
2、在窗体update的时候执行
3、系统认为窗口需要重新绘制的时候执行
重写paintEvent函数内容
1、首先定义绘制类QPainter对应,以及确定在哪里画
QPainter painter(this);
2、定义绘制工具,即绘图的一下属性。如QPen、QBrush等
QPen pen; 不需要设置父对象,因为这是在栈上设置的。
QBrush brush;
3、设置绘制工具的属性
//线的属性
pen.setColor(QColor(255,0,0));//笔的颜色
pen.setWidth(5); //直径为5个像素
pen.setStyle(Qt::DashLine);
//刷子的属性
brush.setStyle(Qt::CrossPattern);
关于QPen的函数
4、把绘制工具放到画家(绘制类QPainter)手里
//让画家拿笔
painter.setPen(pen);
//让画家拿刷子涂鸦
painter.setBrush(brush);
5、画家开始画,即怎么画,画的具体形状
//画线
painter.drawLine(QPoint(10,10),QPoint(10,50));
//画矩形
painter.drawRect()
//画圆
painter.drawEllipse()
//画图
painter.drawPixmap(x位置,y位置,QPixmap(“图片地址”));
QPainter的一些方法如drawRect
注意:点击按钮进行移动图片的思路
设置在界面类中posX属性,通过connect设置槽函数,每次点击,改变posX的值,然后进行更新,即调用重写的paintEvent函数。该函数里面的图片位置为变量posX
this->update(); 不能遗漏。
移动出界面,循环回到原界面思路
设置一个条件判断即可。
if(posX>this->width()){
posX=10;
}
参考 :b站UP绯夏之雨
———————————————————————————————
推荐一个零声学院课程,个人觉得老师讲得不错,分享给大家:零声白金自学卡(含基础架构/高性能存储/golang/QT/音视频/Linux内核)