16,216
社区成员
发帖
与我相关
我的任务
分享
void Temperature_M::paintEvent(QPaintEvent*)
{
QPainter paint(&img);
paint.setPen(QPen(Qt::green,5));
paint.drawRect(rect1_x,rect1_y,rect1_width,rect1_height);//rect1_x,rect1_y,rect1_width,rect1_height分别是矩形的起点和宽和高
picture->setPixmap(QPixmap::fromImage(img));
}
思路就是在图片上绘制矩形,再把图片显示。void Temperature_M:: mousePressEvent(QMouseEvent*mouse_event)
{
if(mouse_event->button()==Qt::LeftButton)//鼠标左键按下
{
QPoint pos=mouse_event->pos();
if(pos.x()>rect1_x&&pos.y()>rect1_y&&pos.x()<(rect1_x+rect1_width)&&pos.y()<(rect1_y+rect1_height))//在矩形区域内
rect1_drag=true;
}
}
void Temperature_M:: mouseMoveEvent(QMouseEvent*mouse_event)
{
if(rect1_drag)
{
rect1_x=mouse_event->pos().x();//获取当前的x
rect1_y=mouse_event->pos().y();//获取当前y
}
}
void Temperature_M:: mouseReleaseEvent(QMouseEvent*mouse_event)
{
rect1_drag=false;
update();
}
拖动矩形框输出的效果却是这样的高手帮我分析分析子么回事啊?看下我博客帖子。。http://blog.csdn.net/kfbyj/article/details/8811010
因为你每次都画了一个矩形到img上,当然是擦不掉的。 这个矩形可以考虑不要画到img上,直接画到窗口上就可以了。
在每次绘制之前将picture重置,擦出上次绘制内容
查阅了一下QPainter类的函数没有清除绘制的图形的函数啊,你有好的解决方法么? [quote=引用 4 楼 heksn 的回复:] 在每次绘制之前将picture重置,擦出上次绘制内容
把update放到mousemove中试试