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 中的 QPushButton 需要双击而不是单击
在 QGraphicsView/QGraphicsScene 中移动 QGraphicsProxyWidget 中的嵌入式小部件