首页 > 其他 > 详细

Qt中在label上载入图片后在上面画矩形框的方法

时间:2014-01-23 04:01:51      阅读:5908      评论:0      收藏:0      [点我收藏+]

        通常我们会在QLabel上显示图片(本文假设你已经会了,不会的话搜一下也很简单),但是有时候我们会需要在演示时在图片上画些东西。比如,我想显示我在图片上用鼠标选取的矩形框,即画一个红矩形框。这个问题说简单也简单,但是千万别小看它,我就曾被这个小问题折磨了一个周末,最后终于搞定,记录下分享给日后需要的朋友吧。先来张图展示下我们想达到的效果:

bubuko.com,布布扣

        首先,需要子类化控件QLabel成你自己的类如myLabel, 然后重写myLabel的paintEvent方法。这个方法的目的是保证你能在这个myLabel类生成的对象中画图并显示。如果你只在上面这个QDialog对话框中重写paintEvent方法的话,那么在画框的时候图片上的红线是无法显示出来的(感觉上就是图片遮挡了画的框)。

        此外,重写子类的paintEvent方法时还有一个非常重要的地方,网上好多方法都忽略了没提这个地方,那就是在重写的paintEvent方法中首先要显式的调用父类的paintEvent方法!!! 忽略的结果就是重写了子类的paintEvent方法后运行时你却看不到这个myLabel控件了。。下面是重写QLabel的子类myLabel的paintEvent方法的代码示例:

void myLabel::paintEvent(QPaintEvent *event)
{
    QLabel::paintEvent(event);//先调用父类的paintEvent为了显示‘背景‘!!!
    QPainter painter(this);
    painter.setPen(QPen(Qt::red,2));
    painter.drawRect(QRect(x,y,w,h));
}



Qt中在label上载入图片后在上面画矩形框的方法

原文:http://blog.csdn.net/seanwang_25/article/details/18667871

(1)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!