要在 QGraphicsView 中根据鼠标绘制点,您可以通过以下步骤实现:
- 创建一个自定义的 QGraphicsView 子类,例如 MyGraphicsView。
- 在 MyGraphicsView 类中重写 mousePressEvent 和 mouseMoveEvent 函数。
- 在 mousePressEvent 中获取鼠标点击位置,并将其转换为场景坐标。
- 在 mouseMoveEvent 中获取当前鼠标位置,并将其转换为场景坐标。
- 使用 QGraphicsScene 的 addEllipse 函数在场景中添加一个椭圆形代表绘制的点。
下面是一个简单的示例代码,展示了如何在 QGraphicsView 中根据鼠标点击和移动事件绘制点:
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QMouseEvent>
class MyGraphicsView : public QGraphicsView
{
public:
MyGraphicsView(QWidget* parent = nullptr) : QGraphicsView(parent)
{
scene = new QGraphicsScene(this);
setScene(scene);
}
protected:
void mousePressEvent(QMouseEvent* event) override
{
if (event->button() == Qt::LeftButton)
{
QPointF pos = mapToScene(event->pos());
scene->addEllipse(pos.x() - 2, pos.y() - 2, 4, 4); // 添加一个半径为2的椭圆形表示点
}
QGraphicsView::mousePressEvent(event);
}
void mouseMoveEvent(QMouseEvent* event) override
{
if (event->buttons() & Qt::LeftButton)
{
QPointF pos = mapToScene(event->pos());
scene->addEllipse(pos.x() - 2, pos.y() - 2, 4, 4); // 添加一个半径为2的椭圆形表示点
}
QGraphicsView::mouseMoveEvent(event);
}
private:
QGraphicsScene* scene;
};
您可以在自己的项目中使用 MyGraphicsView 类,它会在鼠标点击或移动时根据当前位置绘制一个小点。
内容由零声教学AI助手提供,问题来源于学员提问