2015-12-05 2 views
1

У меня есть QWidget (SocketConnection), который в основном draws lines from one point to another. Этот QWidget имеет контекстное меню (из которого его можно удалить). Когда мышь нависает над этим виджетами, она рисует более толстую серой линией.Qt: Polygon from Line

Как вы, возможно, заметили, что QWidget является прямоугольным, зависание также запускается, когда курсор не находится непосредственно на текущей строке. Это становится проблематичным, когда есть два SocketConnections, one being "on top" of the other:

Теперь нижней в контекстном меню не может быть доступен, и занимающий SocketConnection должен быть перемещен в стороне.

Итак, моя идея - создать «TriggerPolygon». Событие hover будет передано, если позиция мыши не находится внутри TriggerPolygon. Полигон должен в основном «выглядеть» как линия, но с толщиной ~ 8 пикселей. Но, учитывая, что эти строки также могут быть более сложными, я действительно не знаю, как это сделать.

Итак, как я могу создать многоугольник из линии? Или есть еще более удобные способы решить корень проблемы? Заранее спасибо!

ответ

0

Используйте немного математики, чтобы выдавить сегмент линии в прямоугольник?

Или: QPainterPathStroker для решения общего назначения (которое включает в себя произвольные пути, поэтому оно, безусловно, менее эффективно, чем линии и прямоугольники).

Или: перейдите в QGraphicsView.