Qt:如何action_triggered然后使用QMouseEvent?
Qt : how to action_triggered then use QMouseEvent?
我想做这样的事情,尽管我知道这不是它的工作原理。我不太擅长 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*)
好吧,我想我能做到的方式有点难看,但它"works"。
也许有更简洁的方法来执行以下操作:
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 无关,我无法将状态项准确放置在我单击的位置。对此有什么想法吗?
更新:我在这里回复了自己:
我想做这样的事情,尽管我知道这不是它的工作原理。我不太擅长 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*)
好吧,我想我能做到的方式有点难看,但它"works"。
也许有更简洁的方法来执行以下操作:
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 无关,我无法将状态项准确放置在我单击的位置。对此有什么想法吗?
更新:我在这里回复了自己: