QPolygon、QLineFなどで描画する可能性を探していますが、末尾からまで一定の距離を置いてに設定してください。画像の例を参照終了できないように、Qtで行を短く切り取ることはできますか?
Qtのどこかにこのような機能がありますか?
QPolygon、QLineFなどで描画する可能性を探していますが、末尾からまで一定の距離を置いてに設定してください。画像の例を参照終了できないように、Qtで行を短く切り取ることはできますか?
Qtのどこかにこのような機能がありますか?
私はそれはQtの中に直接組み込みはないと思います。 shape()および/またはboundingRect()を再実装することで、実際にブロックの形状を大きくすることができます。 paint関数は、あなたが示したように矩形を描画するだけです。
次に、新しい拡張形状で開始エッジと終了エッジエッジを設定します。
ポイントベクトル加算を使用して実際に描画したい線の終点を計算することは困難ではありません。
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.