У меня есть QGraphicsScene
, где я хочу, чтобы пользователь рисовал/перемещал объекты. В настоящее время я могу рисовать все фигуры, которые хочу (а именно [не]закрашенные прямоугольники и эллипсы, линии и кубические кривые Безье), получая QGraphics*Item
.
Я также могу выделить эти элементы, но мне нужен какой-то пиксельный выбор. Например, кривую можно выбрать, щелкнув рядом с ней в том месте, где она изогнута, даже если мышь находится не на реальной линии. То же самое касается пустых прямоугольников или эллипсов, щелкнув по отверстию в середине их, чтобы выбрать их.
Это из-за того, как работает contains
, и он не соответствует моим потребностям: он в основном проверяет, находится ли точка в ограничивающем прямоугольнике. setBoundingRegionGranularity(1)
ничего не решает (упомянул на всякий случай).
Я также пытался напрямую проверить, содержится ли точка в QPainterPath
моих элементов, но это дает мне те же результаты.
Как сделать визуальный выбор фигур?
Единственным решением, которое я вижу на данный момент, было бы переопределение моей собственной функции contains
для каждой формы, которая у меня есть, но это может быть довольно сложно, и я бы очень хотел, чтобы это было сделано Qt, если это возможно.
Я использую Python 3.3 и PyQt 5 (.1.1 IIRC), но это больше связано с инфраструктурой Qt, чем с языком/привязкой, и ответы на C++ тоже подходят.