QT开发中文网

QGraphicsView 根据根据鼠标绘制点

要在 QGraphicsView 中根据鼠标绘制点,您可以通过以下步骤实现:

  1. 创建一个自定义的 QGraphicsView 子类,例如 MyGraphicsView。
  2. 在 MyGraphicsView 类中重写 mousePressEvent 和 mouseMoveEvent 函数。
  3. 在 mousePressEvent 中获取鼠标点击位置,并将其转换为场景坐标。
  4. 在 mouseMoveEvent 中获取当前鼠标位置,并将其转换为场景坐标。
  5. 使用 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=6479

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?