У меня есть приложение, в котором пользователь может рисовать некоторые точки с помощью мыши, и я использовал QGraphicsView для этого.
Я инициализировал сцену в QGraphicsView:
scene = new QGraphicsScene(this);
scene->setItemIndexMethod(QGraphicsScene::NoIndex);
scene->setSceneRect(0, 0, 850, 480);
setScene(scene);
setCacheMode(CacheBackground);
setViewportUpdateMode(BoundingRectViewportUpdate);
setRenderHint(QPainter::Antialiasing);
setTransformationAnchor(AnchorUnderMouse);
scale(qreal(1.0), qreal(1.0));
setMinimumSize(400, 400);
Этосцена не охватывает весь QGraphicsView, и я хочу, чтобы пользователь мог рисовать точки только на сцене.Кроме того, координаты точек должны быть такими, что на сцене, а не в области QGraphicsView.
Это один снимок экрана !о том, как это выглядит.
Я пытался сделать так:
QPoint p = event->pos();
QRectF sceneRect = this->sceneRect();
if ((p.x() > sceneRect.left())&&(p.x() < sceneRect.right())&&(p.y() > sceneRect.top())&&
(p.y() < sceneRect.bottom())){
QMessageBox msg;
msg.setText("point is: " + QString::number(p.x()) + ", " + QString::number(p.y()));
msg.exec();
}
, где я проверяю координаты.Но это не возвращает правильные результаты.Как я могу заставить пользователя рисовать только на сцене?