100分求助,Qt继承自QGraphicsItem的控件响应不了mousePressEvent事件怎么办?

Qt编程。。我想自己做个控件,写了如下代码,但是发觉这个控件无论怎么点击也没有响应。。。怎么回事呢。。求助ing。。。不但鼠标事件无响应,就连keyPressEvent也... Qt编程。。我想自己做个控件,写了如下代码,但是发觉这个控件无论怎么点击也没有响应。。。怎么回事呢。。求助ing。。。不但鼠标事件无响应,就连keyPressEvent也是没有响应的

class diamond : public QGraphicsItem //这是我继承的控件定义,继承自QGraphicsItem

{

public:

diamond(int x,int y,int w,int h,dc_scene *in_scene);

int dx,dy,dw,dh;

void paint(QPainter * painter,const QStyleOptionGraphicsItem *option,QWidget * widget); //paint函数里,我在屏幕上画了个方块,之后试着点击这个方块,毫无反映啊

QRectF boundingRect() const;

dc_scene *scene;

protected:

void mousePressEvent(QGraphicsSceneMouseEvent *event); //这块把事件函数声明了

void keyPressEvent ( QKeyEvent * event );

};

下面这是鼠标事件的函数,似乎无论怎么点击,也无法进入这个函数

void diamond::mousePressEvent(QGraphicsSceneMouseEvent *event)

{

scene->addLine(0,0,100,100); //这句话都是没响应的。。。

if(event->button() == Qt::LeftButton) {

scene->clear();

}

else {

QGraphicsItem::mousePressEvent(event);

}

}

怎么回事呢。。。初学Qt的无知小白求解啊啊啊啊T_T

是不是我漏了什么步骤呢?比如修改event()分发事件函数之类的。。求解释。。还可以再加分的
展开
 我来答
匿名用户
2013-03-05
展开全部
经过测试除了要覆盖时间函数之外无需任何其他动作……
所以,请问您那scene是什么?是这个类的实例所在的QGraphicsScene的指针?dc_scene这是个啥?缺少这些代码我真的不知道是什么问题了。
QGraphicsItem 的所有事件都是由QGraphicsScene获得的,所以一定要确保QGraphicsScene或者是其子类的事件分发函数被正确重载或者使用默认的。
jackwind1987
2013-03-04 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:487万
展开全部
QGraphicsItem 接收 QGraphicsScene 的 sceneEvent() 来传递事件。你有继承QGraphicsScene 吧,有没有重写sceneEvent这个函数?你可以看看QGraphicsItem 的文档
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式