2016-11-03 12 views
0

私はグラフィックスビューフレームワークに基づいてマッピングアプリケーションを構築しています。ドラッグするといくつかの線が消えることを除いて、すべてがうまく動作します。それは見えないと判断される項目のようですが、実際はその一部です。以下はスクリーンショットです。 IはQGraphicsViewQGraphicsItemサブクラスビューをドラッグするとQGraphicsItemが消えます

enter image description here

enter image description hereは、表示するために接続されているシーンにアイテムを追加しました。ドラッグ機能を実装するには、単にサブクラスのコンストラクタにsetDragMode()を使用します。
そしてMapShape.cpp中:

QRectF Polyline::boundingRect() const 
{ 
    return QRectF(minX-pen.width()/2, minY-pen.width()/2, maxX-minX+pen.width(), maxY-minY+pen.width()); 
} 

void Polyline::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) 
{ 
    Q_UNUSED(option); 
    Q_UNUSED(widget); 

    pen.setCosmetic(true); 
    painter->setPen(pen); 
    for(auto iter = points.begin(); iter != points.end()-1; ++iter) 
    { 
     painter->drawLine(*iter, *(iter+1)); 
    } 
} 

誰かが助けてもらえますか?ありがとうございました!

答えて

0

コードが完全ではありませんが、おそらく、boundingRectの結果が正しくないか、minX、minYなどのメンバーを変更する前にprepareGeometryChangeを呼び出さなかった可能性があります。またはペンの幅。誤ってboundingRectの外に描画してItemClipsToShapeフラグをオンにしている場合は、このような動作も見られます。 ItemClipsToShapeがなければ、あなたの絵はまだ成功しますが、アイテムを移動するとアーティファクトが出ます。 ItemClipsToShapeでは、ペインタは境界線の外に描画されません。

+0

boundingRectを思い出していただきありがとうございます。私は間違って範囲を計算し、今問題は解決されました:) –

関連する問題