Qt:如何进行动作触发然后使用QMouseEvent?

问题描述 投票:0回答:1

尽管我知道这不是它的工作原理,但我想做这样的事情。我对QMouseEvent不太满意,

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

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

}

所以我想在界面中单击button addState(由设计者模式制作,ui文件),然后在场景中第二次单击时,用鼠标调用drawState()(在点击)位置。

我应该怎么做?

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

QMetaObject::connectSlotsByName: No matching signal for on_addState_triggered(QMouseEvent*)
c++ qt slot qmouseevent
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相关,我无法将状态项准确地放置在我单击的位置。有这个想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.