| 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/ |