Qt实现在QLabel上绘制2D图形
来源:互联网 发布:淘宝详情页图片的宽度 编辑:程序博客网 时间:2024/05/04 11:01
根据以往的经验,我们绘制图形的时候都是在paintevent()函数中实现的,每次移动或改变窗口都会调用该函数来实现绘制。
在paintevent函数中,通常需要设置QPainter对象,创建QPainter对象的同时需要指定绘图设备,即继承自QPainterDevice的子类作为绘图设备,绘制出来的图形将在这个设备上进行显示,Qt一共提供了4个这样的类,分别是QPixmap,QBitmap,QImage,和QPicture。这4个子类都可作为绘图设备来进行绘制和显示图形并有着各自的特点,但是本篇重点不在这4个类。
现在我们想在QLabel上进行绘制,应该有什么方法呢?网上对于实现这个的方法有多种,但是本篇只介绍一种,使用事件过滤器来使QLabel对象捕获QEvent::Paint事件。即,绘图函数不需要放在paintevent()函数中也可以实现绘图。
那么,实现这个功能的主要函数就还是事件过滤器的两个重要函数,即installEventFilter()和eventFileter()函数,附上源程序供大家参考
imglabel=new QLabel(widget);
imglabel->setGeometry(10,10,670,580);
imglabel->installEventFilter(this);
bool INVO::eventFilter(QObject *watched, QEvent *event)
{
if(watched ==imglabel && event->type() == QEvent::Paint)
{
paint_gear();
}
return QWidget::eventFilter(watched,event);
}
void INVO::paint_gear()
{
QPainter painter(imglabel);
painter.setPen(Qt::blue);
painter.drawLine(100,100,200,200);
}
上述函数已经经过验证,是可行的,还有其他方法实现这一功能,可自行查阅其他资料
- Qt实现在QLabel上绘制2D图形
- 【Qt开发】在QLabel已经显示背景图片后绘制图形注意事项
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- QT 实现QLabel上的超链接
- #Qt入门#---------实现QLabel上的超链接
- Android中GPU硬件加速控制及其在2D图形绘制上的局限
- 十一、Qt 2D绘图(一)绘制简单图形
- Qt 2D绘图(一)绘制简单图形
- iOS上使用Quartz 2D绘制简单图形
- iOS上使用Quartz 2D绘制简单图形
- 在位图上绘制图形
- Qt绘制2d
- Qt绘制2d
- Android 简单工具说明
- 微信的消息内容
- 快速排序 python
- ionic2
- 检查HDFS的健康状态
- Qt实现在QLabel上绘制2D图形
- BZOJ2793: [Poi2012]Vouchers
- SOA 解惑
- html常用标签
- 2017-02-16 JAVA课程学习记录(惠普基地)
- Gym - 100735H
- docker学习之一docker概念
- ArrayList和LinkedList的区别
- 持久化存储——HBase简介