Re: [qet] Patch pour mettre en évidence les pts de déplacement des conducteurs |
[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]
Suite à mon précédent message, voici ci-joint un premier jet. Au final, ça fait un peu sapin de Noël si on fait Ctrl+A et qu'on promène sa souris sur le schéma, mais ça correspond plus à ce que tu voulais faire. Je me demande si on n'aurait pas intérêt à augmenter l'épaisseur du conducteur qui reçoit l'hover*Event => ça permettrait de bien distinguer le trajet du conducteur sélectionné. Qu'en penses-tu ? À noter que j'en ai profité pour : * remettre Conductor::mouseMoveEvent dans son état inital ; * renommer l'attribut privé que tu avais ajouté : * carré, c'est square en anglais * j'essaye de maintenir une cohérence sur le nom des variables : * que des minuscules (je réserve le camelCase aux méthodes) * des underscores au milieu pour que ça reste lisible * et un underscore à la fin pour distinguer discrètement un attribut privé d'une variable locale ; * l'initialiser dans la liste d'initialisation (cf http://cpp.developpez.com/faq/cpp/?page=constructeur#CONSTRUCTEUR_liste_init ). @+ -- Xavier G. Développeur du projet QElectroTech
Index: sources/conductor.h =================================================================== --- sources/conductor.h (révision 804) +++ sources/conductor.h (copie de travail) @@ -90,11 +90,11 @@ virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); + virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *); + virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); private: - /// taille du carre de saisie du segment - int RectMoveSeg_Scale; /// caracteristiques du conducteur ConductorProperties properties_; /// booleen indiquant si le fil est encore valide @@ -121,6 +121,8 @@ static QBrush conductor_brush; static QBrush square_brush; static bool pen_and_brush_initialized; + /// facteur de taille du carre de saisie du segment + int segments_squares_scale_; private: void segmentsToPath(); Index: sources/conductor.cpp =================================================================== --- sources/conductor.cpp (révision 804) +++ sources/conductor.cpp (copie de travail) @@ -47,7 +47,8 @@ moving_segment(false), previous_z_value(zValue()), modified_path(false), - has_to_save_profile(false) + has_to_save_profile(false), + segments_squares_scale_(1.0) { // ajout du conducteur a la liste de conducteurs de chacune des deux bornes bool ajout_p1 = terminal1 -> addConductor(this); @@ -93,8 +94,6 @@ this, SLOT(displayedTextChanged()) ); - // taille du carre de saisie du segment - RectMoveSeg_Scale = 1.0; } /** @@ -510,10 +509,10 @@ if (i > 1) { qp -> fillRect( QRectF( - ((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale, - ((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale, - 2.0 * RectMoveSeg_Scale, - 2.0 * RectMoveSeg_Scale + ((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * segments_squares_scale_, + ((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * segments_squares_scale_, + 2.0 * segments_squares_scale_, + 2.0 * segments_squares_scale_ ), square_brush ); @@ -603,12 +602,11 @@ } else if (hasClickedOn(press_point, segment -> middle())) { moving_point = false; moving_segment = true; - RectMoveSeg_Scale = 2.0; previous_z_value = zValue(); setZValue(5000.0); moved_segment = segment; break; - }else RectMoveSeg_Scale = 1.0; + } segment = segment -> nextSegment(); } } @@ -623,12 +621,11 @@ @param e L'evenement decrivant le deplacement de souris. */ void Conductor::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { - // position pointee par la souris - qreal mouse_x = e -> pos().x(); - qreal mouse_y = e -> pos().y(); - // clic gauche if (e -> buttons() & Qt::LeftButton) { + // position pointee par la souris + qreal mouse_x = e -> pos().x(); + qreal mouse_y = e -> pos().y(); bool snap_conductors_to_grid = e -> modifiers() ^ Qt::ShiftModifier; if (snap_conductors_to_grid) { @@ -691,6 +688,30 @@ } /** + Gere l'entree de la souris dans la zone du conducteur + @param e Le QGraphicsSceneHoverEvent decrivant l'evenement +*/ +void Conductor::hoverEnterEvent(QGraphicsSceneHoverEvent *e) { + Q_UNUSED(e); + segments_squares_scale_ = 2.0; + if (isSelected()) { + update(); + } +} + +/** + Gere la sortie de la souris de la zone du conducteur + @param e Le QGraphicsSceneHoverEvent decrivant l'evenement +*/ +void Conductor::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) { + Q_UNUSED(e); + segments_squares_scale_ = 1.0; + if (isSelected()) { + update(); + } +} + +/** Gere les mouvements de souris au dessus du conducteur @param e Le QGraphicsSceneHoverEvent decrivant l'evenement */
Attachment:
signature.asc
Description: This is a digitally signed message part.
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |