私はQGraphicsItemの親であるQGraphicsTextItemを持っています。私はQGraphicsTextItemが常にQGraphicsItemのすぐ上に存在するようにしたいが、スケールファクタが1より小さくなるとテキストを同じサイズにしたい、つまり親グラフィックスアイテムの縮尺が小さくなりました。スケールファクタが1未満のときにQGraphicsItem::ItemIgnoresTransformations
フラグをtrueに設定すると、サイズを保持するためのトリックが行われることがわかりました。QGraphicsItem :: ItemIgnoresTransformationsを適用した後の相対的な子の位置を維持する
しかし、QGraphicsItemの上に常に置かれるテキストの位置を取得する方法を見つけることができないようです。これを行う方法はありますか?私はdeviceTransform()
関数を使ってみましたが、スクロールしてもQGraphicsItemのテキストはまだ動き出しました。さらに悪いのは、テキスト項目の一部が「ジグリング」し始めたことです。つまり、彼らは揺れているように見えるように、位置を少しずつ変え続けています。これが私が使用する必要のある機能であれば、正しく使用する方法はわからないと思います。
:これは何のためにやり過ぎかもしれ:ここでは
fTextItem = new QGraphicsTextItem(getName(), this);
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
はQGraphicsItem
qreal lod = painter->worldTransform().m22();
if(lod <= 1.0) {
fTextItem-setFlag(QGraphicsItem::ItemIgnoresTransformations);
fTextItem->setPos(fTextItem->deviceTransform(view-viewportTransform()).inverted().map(view->mapFromScene(mapToScene(0,0))));
} else {
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, false);
fTextItem->setPos(0, 0);
}
あなたはQGraphicsTextItemではなくQGraphicsItemの親変換を無視するようにフラグを設定するオブジェクトではないでしょうか? – ArmenB