Я делаю программу Qt, где у меня есть прямоугольники, связанные с проводами (размещены пользователем с событиями мыши). Каждый провод проверяет, есть ли прямоугольник в начале и в конце. Если это так, провод помещается.
Недавно я хотел изменить свои прямоугольники на горизонтальные линии (лучше визуально), поэтому я написал:
QRectF myRect(-15, 0, 30, 1);
Вместо обычного прямоугольника. Проблема в том, что теперь очень сложно отследить мои провода, потому что пользователь должен связать 2 строки мышью, что практически невозможно.
Я пытался изменить ограничивающий прямоугольник / форму, но ни один из них не работает:
QRectF Port::boundingRect()
{
return QRectF(-15, 0, 30, 10);
}
QPainterPath Port::shape()
{
QPainterPath path;
path.addRect(-15, 0, 30, 10);
return path;
}
Я думаю, что проблема заключается в том, что ограничивающий прямоугольник & Форма используется только для выбора.
Я также пытался использовать изображение (отчаянное решение), но я не могу найти способ добавить изображение / растровое изображение в мой QpainterPath.
Я знаю, что могу использовать линию вместо плоского прямоугольника, но проблема все та же.
Спасибо за помощь 🙂
QPainterPath
для контрольного прямоугольника, как вы упомянулиПолучите Конечные точки Провода в QPointF
(Две точки)
использование bool QPainterPath::contains(const QPointF & point)
проверить, находится ли провод в пределах QPainterPath
(Две проверки для начальной и конечной точки провода)
или это в случае проволочного изображения, которое перетаскивают,
QPainterPath
для контрольного прямоугольника QRect
провода используя QPixMap::rect()
bool QPainterPath::contains(const QRectF & rectangle)
проверить, находится ли провод в пределах QPainterPath