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()分发事件函数之类的。。求解释。。还可以再加分的 展开
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()分发事件函数之类的。。求解释。。还可以再加分的 展开
2个回答
2013-03-05
展开全部
经过测试除了要覆盖时间函数之外无需任何其他动作……
所以,请问您那scene是什么?是这个类的实例所在的QGraphicsScene的指针?dc_scene这是个啥?缺少这些代码我真的不知道是什么问题了。
QGraphicsItem 的所有事件都是由QGraphicsScene获得的,所以一定要确保QGraphicsScene或者是其子类的事件分发函数被正确重载或者使用默认的。
所以,请问您那scene是什么?是这个类的实例所在的QGraphicsScene的指针?dc_scene这是个啥?缺少这些代码我真的不知道是什么问题了。
QGraphicsItem 的所有事件都是由QGraphicsScene获得的,所以一定要确保QGraphicsScene或者是其子类的事件分发函数被正确重载或者使用默认的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询