Qt中如何重载一个label的paintEvent或者mouseMoveEvent

Qt中如何重载一个label的paintEvent或者mouseMoveEvent,第1张

新建一个C++类,在d出的窗口中填写类名CLabel,并选择其父类为QLabel

然后在这个新类中添加 paintEvent或者mouseMoveEvent 成员方法;

在要用到label控件上右键->提升为... 在d出的提升对话框中添加CLabel类,选择这个类,点击提升后该label控件就可以响应你自己的paintEvent或者mouseMoveEvent方法。

class A:public QWidget

class B:public QWidget

....

A* a

B* b

void A::mousePressEvent(QMouseEvent* e)

{

//do something先做你需要做的工作

//发现这个事件被处理了的,那就是B处理的,B直接调用了A的这个函数

if(e->isAccepted())

return

//如果没被处理,那就是系统的事件到来,自己先处理,然后传给B,B收到一个处理了的事件,就不再传给A了;这样避免递归死循环

else

e->accept()

b->mousePressEvent(e)

}

void B::mousePressEvent(QMouseEvent* e)

{

//do something

//同样的道理

if(e->isAccepted())

return

else

e->accept()

a->mousePressEvent(e)

}

//releaseEvent也一样

moveEvent也一样,但都需要注意,如果用要坐标,那么直接调用的值到另一个UI需要转换


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11709081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存