0

我想做这样的事情,即使我知道这不是它的工作方式。我不太擅长 QMouseEvent,

void MainWindow::on_addState_triggered(QMouseEvent* event)
{
    qDebug() << event->pos();

    if (event->buttons() == Qt::LeftButton)
    {
      newBoard.drawState(event->x(),event->y());
    }

}

所以我想在我的界面中单击按钮addState(使用设计器模式,ui文件制作)然后在我的场景上第二次单击它调用drawState()用鼠标(点击)位置。

我该怎么做?

现在代码编译但在运行时出现此错误

QMetaObject::connectSlotsByName: No matching signal for on_addState_triggered(QMouseEvent*)
4

1 回答 1

0

好吧,我想我能做到的方式有点难看,但它“有效”。

也许有一种更清洁的方法来执行以下操作:

    void MainWindow::on_addState_triggered()
    {

          drawAddState=true;

    }

  void MainWindow::mousePressEvent(QMouseEvent *event)
    {
        if(drawAddState==true)
        {
            if (event->button() == Qt::LeftButton) {
                newBoard.drawState(event->localPos().x(),event->localPos().y());
                drawAddState=false;
            }
        }

    }

不幸的是,event->localPos()、pos() 甚至 GlobalPos 都与我的 GraphicsScene 无关,我无法将状态项准确放置在我单击的位置。对此有任何想法吗?

更新:我在这里回答自己:https ://stackoverflow.com/a/62278962/13621190

于 2020-06-07T15:29:28.873 回答