Событие клика для QGraphicsView Qt

Я сделал графический интерфейс в Qt, который в основном является виджетом с QGraphicsView, у меня есть функция:

void GUI::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
QPointF mousePoint = ui->graphicsView->mapToScene(event->pos());
qDebug() << mousePoint;
}
}

какая ссылка на публичный слот:

  void mousePressEvent(QMouseEvent *event);

это показывает мне на консоли координаты x, y того места, где я щелкнул, однако в настоящее время это работает для всего виджета, и я в идеале хотел бы, чтобы x, y (0,0) были в верхнем левом углу QGraphicsView вместо вверху слева от всего виджета. Кто-нибудь есть какие-либо идеи, как сделать эту работу, я подумал из своего кода, что это то, что он делал, но оказывается, что это не так, IV некоторое время оглядывался, но я ничего не придумал

любая помощь будет очень признательна, спасибо.

3

Решение

Переопределить mousePressEvent(QMouseEvent *event) из QGraphicsView не ваш виджет будет «правильным» способом сделать это. В противном случае вы можете взломать его с помощью:

// Detect if the click is in the view.
QPoint remapped = ui->graphicsView->mapFromParent( event->pos() );
if ( ui->graphicsView->rect().contains( remapped ) )
{
QPointF mousePoint = ui->graphicsView->mapToScene( remapped );
}

Это предполагает, что виджет является родителем QGraphicsView,

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]