鼠标再QgraphicsView内时显示坐标
时间: 2024-09-23 10:07:50 浏览: 43
QGraphicsview 显示图片,鼠标框选获取图片选区,OpenCV 显示ROI矩形选区。
5星 · 资源好评率100%
在Qt图形界面编程中,如果你想要在`QGraphicsView`内显示鼠标位置的坐标,可以通过实现鼠标事件处理函数并更新视图上的标记来完成。以下是简单的步骤:
1. 创建一个`QGraphicsItem`子类,如`MyGraphicsObject`,作为标记点。
```cpp
class MyGraphicsObject : public QGraphicsRectItem {
public:
explicit MyGraphicsObject(QGraphicsScene *scene) : QGraphicsRectItem(scene) {}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override {
painter->drawPoint(painter->pen().color(), pos());
}
};
```
2. 在`QGraphicsView`上添加这个标记点,并设置其位置与鼠标同步。
```cpp
QGraphicsScene *scene = QGraphicsView::scene();
if (!scene->itemAt(view->mapFromGlobal(QCursor::pos()))) {
scene->addItem(new MyGraphicsObject(scene));
}
```
3. 实现鼠标移动事件监听,比如`mouseMoveEvent()`,更新标记的位置。
```cpp
void QGraphicsView::mouseMoveEvent(QMouseEvent *event) {
auto item = scene()->itemAt(event->pos());
if (item && dynamic_cast<MyGraphicsObject*>(item)) {
static_cast<MyGraphicsObject*>(item)->setPos(event->pos());
}
}
```
这样,当鼠标在`QGraphicsView`区域内移动时,标记点会跟随鼠标位置,并显示当前位置的坐标。
阅读全文