Я сделал графический интерфейс в 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 некоторое время оглядывался, но я ничего не придумал
любая помощь будет очень признательна, спасибо.
Переопределить 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
,
Других решений пока нет …