質問

私は、コードのこの部分をいじるされています:

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のドキュメントを読んだ後、私は何を私実現します間違ってやっています。ドキュメントによると:

  

アイテムの形状であることに注意してください   アイテム座標に設けられ、その   位置に初期化される(0、0)

私はaddLine(50,50、100、100)を指定するのであれば、

、私は実際にそのローカル項目が座標修正しています。仮定は、私は、シーン座標が間違っているか、根拠がないとして、それが扱われることになりました。私がやるべきことはこれです。

// 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)にその中心をリセットする必要があります。

これは同じ問題つまずく誰がお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top