QTCreator5 QLabel的鼠标事件处理

roamer2000 发布于 2014/04/08 16:26
阅读 2K+
收藏 0

我想做一件事情,利用QTCreator创建一个界面,包括一个QLabel用于显示图片,现在图片是显示了,但是想加入下功能:

1、OnMouseMove时显示坐标,就是当前图片的像点位置

2、OnMouseWheel时,对图片进行缩放

可是QLabel并没有任何有关mouse的事件,怎么做呢?我是新手,看了网上一些说法,包括做一个子类,但是在QTCreator环境下怎么做呢?有大虾指点不胜感激涕零,谢谢

加载中
0
beyondforever68
beyondforever68

installEventFilter试试

0
hehuim
hehuim

写一个QLabel的派生类,然后重写该类中的mouseMoveEvent、mousePressEvent、mouseReleaseEvent等函数,来实现你的需要!

0
公孙二狗
公孙二狗

1、OnMouseMove时显示坐标,就是当前图片的像点位置

mouseTracking : bool

This property holds whether mouse tracking is enabled for the widget.

If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved.

If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed.

Access functions:

bool hasMouseTracking() const
void setMouseTracking(bool enable)


2、OnMouseWheel时,对图片进行缩放

void QWidget::wheelEvent(QWheelEvent * event) [virtual protected]

This event handler, for event event, can be reimplemented in a subclass to receive wheel events for the widget.

If you reimplement this handler, it is very important that you ignore() the event if you do not handle it, so that the widget's parent can interpret it.

The default implementation ignores the event.

QPixmap::scaled 看看这么缩放图片。

0
公孙二狗
公孙二狗

仔细阅读QWidget的文档,都有。

0
r
roamer2000

谢谢各位的回复,有具体的例子吗?小白一个,还请详述,谢谢!

自己添加事件、写一个QLabel的派生类是在自己的工程里还是在在creator里呢?creator里面没找到怎么添加

hehuim
hehuim
在你的工程里点右键,添加新文件,C++class,基类填写QLabel就可以了,然后重写前面说的那几个事件,具体的话看看QLabel和QWidget的文档!
返回顶部
顶部