QGraphicsScene 中的位移

Posted

技术标签:

【中文标题】QGraphicsScene 中的位移【英文标题】:Displacement in QGraphicsScene 【发布时间】:2014-08-31 15:47:21 【问题描述】:

我有这样的程序:在我的小部件中,我有 qpushbuttons、qslider 和 qgraphicsview。我将 qgraphicsscene 放在 qgraphicsview 中。问题是当我在 QGraphicsscene 中单击并想要绘制一个被单击的点时,会有位移。当我点击 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)));

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

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

【问题讨论】:

【参考方案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();

【讨论】:

【参考方案2】:

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

【讨论】:

我告诉过你同样的解决方案。 没有这个,当我发布答案时 ui->graphicsView->setSceneRect(50,50,50,50);//例如

以上是关于QGraphicsScene 中的位移的主要内容,如果未能解决你的问题,请参考以下文章

向QGraphicsScene中加入控件

QGraphicsScene 中的 QPushButton 需要双击而不是单击

QGraphicsScene 中的视觉像素完美选择

QGraphicsScene,PyQt中的图像显示不正确

在 QGraphicsView/QGraphicsScene 中移动 QGraphicsProxyWidget 中的嵌入式小部件

Qt中的QGraphicsScene等对象的坐标系是怎么设置的