尽管我知道这不是它的工作原理,但我想做这样的事情。我对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*)
好吧,我想我能做到的方式有点难看,但它“有效”。
也许有更干净的方法可以执行以下操作:
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相关,我无法将状态项准确地放置在我单击的位置。有这个想法吗?