2016-05-16 1 views

答えて

0

私はそれはQtの中に直接組み込みはないと思います。 shape()および/またはboundingRect()を再実装することで、実際にブロックの形状を大きくすることができます。 paint関数は、あなたが示したように矩形を描画するだけです。

次に、新しい拡張形状で開始エッジと終了エッジエッジを設定します。

1

ポイントベクトル加算を使用して実際に描画したい線の終点を計算することは困難ではありません。

void newTerminals(QPointF a, QPointF b, qreal gap, QPointF &aa, QPointF &bb) 
{ 
    // Vector between points shortened to match gap 
    QVector2D v(b.x() - a.x(), b.y() - a.y()); 
    v *= gap/v.length(); 

    // new start 
    aa.rx() = a.x() + v.x(); 
    aa.ry() = a.y() + v.y(); 

    // new end 
    bb.rx() = b.x() - v.x(); 
    bb.ry() = b.y() - v.y(); 
} 

これでうまくいくはずです。 aからbに線を引くのではなく、aaからbbに短縮線を引きます。

// TODO: check for a != b, gap != 0, length > gap, etc.

関連する問題