QGraphicsScene中的位移

时间:2014-08-31 15:47:21

标签: c++ qt qgraphicsview qgraphicsscene

我有这样的程序:在我的Widget中我有qpushbuttons,qslider和qgraphicsview。我把qgraphicsscene放在qgraphicsview中。问题是,当我点击QGraphicsscene并想要绘制一个Point时,点击了一个位移。当我点击QGraphicsScene的中心时,没有任何问题。

if (mouseEvent->button() == Qt::LeftButton)
{
    QPointF pos = mouseEvent->scenePos();
    addEllipse(pos.x(), pos.y(), 5, 5, QPen(QColor(Qt::green)), QBrush(QColor(Qt::red)));
}

也有一个屏幕。 所以,问题是如何避免这种场景的移动。Screen

在屏幕中,我点击了右下角,但是在中心点了点

2 个答案:

答案 0 :(得分:1)

试试这个。在我的电脑中它没有位移

。* H

#ifndef GRAPHICSSCENE_H
#define GRAPHICSSCENE_H

#include <QGraphicsScene>
#include <QMouseEvent>
class GraphicsScene : public QGraphicsScene
{
    Q_OBJECT
public:
    explicit GraphicsScene(QObject *parent = 0);

signals:

protected:
    void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
public slots:

};

#endif // GRAPHICSSCENE_H

*。CPP

#include "graphicsscene.h"
#include <QDebug>
#include <QGraphicsSceneMouseEvent>

GraphicsScene::GraphicsScene(QObject *parent) :
    QGraphicsScene(parent)
{
}

void GraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    qDebug() << "in";
    if (mouseEvent->button() == Qt::LeftButton)
    {
        QPointF pos = mouseEvent->scenePos();
        addEllipse(pos.x(), pos.y(), 5, 5, QPen(QColor(Qt::green)), QBrush(QColor(Qt::red)));

    }
}

使用

GraphicsScene *scene = new GraphicsScene(this);
ui->graphicsView->setSceneRect(50,50,50,50);//for example
ui->graphicsView->setScene(scene);
ui->graphicsView->show();

答案 1 :(得分:0)

view-&gt; setSceneRect(0,0,640,480); 帮助了我