代码之家  ›  专栏  ›  技术社区  ›  CakeMaster

qgraphicscene子类正在忽略鼠标按下事件

  •  2
  • CakeMaster  · 技术社区  · 16 年前

    我有一个UI和一个qgraphicscene子类graphicscene,它实现了mousePressEvent(),但是鼠标点击被忽略了。

    ui->setupUi(this);
    scene = new GraphicsScene(this);
    scene->addPixmap(QPixmap::fromImage(someImage));
    ui->graphicsView->setScene(scene);
    connect(scene, SIGNAL(clicked(QPoint)), this, SLOT(someSlot(QPoint)));
    

    Graphicscene::MousePresseEvent()未调用,因此不会发出clicked()信号。我是否需要设置其他内容来启用此功能?

    void GraphicsView::mousePressEvent(QMouseEvent *event) {
            emit clicked(event->pos());
    }
    

    它连接到一个正确签名的插槽。

    1 回复  |  直到 16 年前
        1
  •  1
  •   CakeMaster    16 年前

    莫斯对函数签名的看法是对的。功能应该是:

    void GraphicsView::mousePressEvent(QGraphicsSceneMouseEvent *event) {
            emit clicked(event->pos());
    }
    

    void GraphicsView::mousePressEvent(QMouseEvent *event) {
            emit clicked(event->pos());
    }