• 5300阅读
  • 6回复

[提问]小白求助!Qt继承自QGraphicsItem的控件响应不了mousePressEvent事件怎么办? [复制链接]

上一主题 下一主题
离线呯呀么呯
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-04
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()分发事件函数之类的。。求解释。。
离线pxiao_xiao

只看该作者 1楼 发表于: 2013-03-04
别的不知道 keypressEvent 执行 需要item获取焦点 focus
离线呯呀么呯
只看该作者 2楼 发表于: 2013-03-04
大神别走啊T_T。。。具体怎么个弄法啊啊啊啊
离线呯呀么呯
只看该作者 3楼 发表于: 2013-03-04
回 1楼(pxiao_xiao) 的帖子
大神别走啊T_T。。。具体怎么个弄法啊啊
离线呯呀么呯
只看该作者 4楼 发表于: 2013-03-04
哎。。貌似画图的时候给个正的坐标就没事了。。。。我之前这个控件加在负的坐标上。。。。
离线呯呀么呯
只看该作者 5楼 发表于: 2013-03-04
哦,不对。。是图像包容框写错了。。。
离线祥龙九霄

只看该作者 6楼 发表于: 2013-05-21
应该重写shape函数,这个函数主要是做边框检测的,事件没响应是因为不在你的控件的检测区域内,不能传给它。
快速回复
限100 字节
 
上一个 下一个