新建一个C++类,在d出的窗口中填写类名CLabel,并选择其父类为QLabel
然后在这个新类中添加 paintEvent或者mouseMoveEvent 成员方法;
在要用到label控件上右键->提升为... 在d出的提升对话框中添加CLabel类,选择这个类,点击提升后该label控件就可以响应你自己的paintEvent或者mouseMoveEvent方法。
class A:public QWidgetclass 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需要转换
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)