0

シーン内でカスタム QGraphicsItem を生成しようとしていますが、原点からアイテムにポイントを正確にマッピングする方法がわかりません。私の場所は、私の MainWindow の dropEvent から取得されます。

void MainWindow::dropEvent(QDropEvent *event)
{
    QPointF dropPos = ui->GraphicsView->mapFrom(this, event->pos());
    vModule *module = new vModule(dropPos);
    ui->GraphicsView->scene->addItem(module);
}

これは私の vModule.cpp です:

vModule::vModule(QPointF dropPos)
{
    QPointF pos = mapFromScene(dropPos);
    setX(pos.x());
    setY(pos.y());
    // ...
}

// Event handler implementation, shouldn't be relevant

そして私の vModule.h:

class vModule : public QObject, public QGraphicsItem
{
public:
    explicit vModule(QPointF dropPos);
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
    QRectF boundingRect() const;

protected:
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
}

これは私が論理的に考えた変換に最も近いものですが、実際にはまったく間違っており、単にイベントから位置をそのまま渡すよりも間違っています (これは、メイン ウィンドウとの位置の一定の違いですか?)。誰でも私のエラーを修正できますか?

4

1 に答える 1