なぜQGraphicsItemは:: scenePos()(0,0)を返す保つん
-
18-09-2019 - |
質問
私は、コードのこの部分をいじるされています:
QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100);
qDebug() << anotherLine->scenePos();
QGraphicsLineItem * anotherLine2 = this->addLine(80,10, 300, 300);
qDebug() << anotherLine2->scenePos();
this
ポインタがQGraphicsScene
を指します。どちらの場合も、私は両方の出力のためのQPointF(0,0)
を取得する。文書を読むことから
、私はscenePos()
がシーン内の行の位置を返すことになって、ではないところ、そのローカル座標系内にあると思いました。私が間違って何をしているのですか?
解決
addLine の上、慎重にQT 4.5のドキュメントを読んだ後、私は何を私実現します間違ってやっています。ドキュメントによると:
私はaddLine(50,50、100、100)を指定するのであれば、アイテムの形状であることに注意してください アイテム座標に設けられ、その 位置に初期化される(0、0)
、私は実際にそのローカル項目が座標修正しています。仮定は、私は、シーン座標が間違っているか、根拠がないとして、それが扱われることになりました。私がやるべきことはこれです。
// Create a line of length 100
QGraphicsItem * anotherLine = addLine(0,0, 100, 100);
// move it to where I want it to be within the scene
anotherLine->setPos(50,50);
私はシーン内の描画することによって行を追加していそうであれば、私はその後、私はそれがシーンになりたい場所に移動しsetPos()を使用します(0,0)にその中心をリセットする必要があります。
これは同じ問題つまずく誰がお役に立てば幸いです。
所属していません StackOverflow