2015-12-05 2 views
1

J'ai un QWidget (SocketConnection) qui essentiellement draws lines from one point to another. Ce QWidget a un menu contextuel (à partir duquel il peut être supprimé). Lorsque la souris survole ce widget, elle dessine une ligne grise plus épaisse.Qt: Polygone de la ligne

Comme vous avez pu le remarquer, le QWidget étant rectangulaire, le survol est également déclenché lorsque le curseur n'est pas directement sur la ligne réelle. Cela devient problématique quand il y a deux SocketConnections, one being "on top" of the other:

maintenant dans le menu contextuel de l'inférieur ne peut pas être accédée, et l'occupation SocketConnection doit être déménagé. Donc, mon idée est de générer un "TriggerPolygon" - L'événement hover-event serait passé si la position de la souris ne se trouvait pas dans le TriggerPolygon. Le polygone devrait fondamentalement "ressembler" à la ligne, mais avec une épaisseur de ~ 8px. Mais, considérant que ces lignes peuvent aussi être plus complexes, je ne sais vraiment pas comment y parvenir. Alors, comment puis-je générer un polygone à partir d'une ligne? Ou y a-t-il encore des façons plus confortables de résoudre la racine du problème? Merci d'avance!

Répondre

0

Utilisez un peu de maths pour extruder un segment de ligne dans un rectangle? Ou: QPainterPathStroker pour une solution à usage général (qui implique des chemins arbitraires, c'est donc sûrement moins efficace que les lignes et les rectangles). Ou: envisagez de passer à QGraphicsView.