gpt4 book ai didi

c++ - QGraphicsScene 中的位移

转载 作者:行者123 更新时间:2023-11-28 06:42:58 26 4
gpt4 key购买 nike

我有这样的程序:在我的小部件中,我有 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)));
}

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

在屏幕上我点击了右下角,但是点被画在了中间

最佳答案

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

.*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();

关于c++ - QGraphicsScene 中的位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com