diff --git a/conductor.cpp b/conductor.cpp index dd87f5edc..c3cb3dc37 100644 --- a/conductor.cpp +++ b/conductor.cpp @@ -417,11 +417,13 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem */*qsogi*/, Q // dessin du conducteur qp -> drawPath(path()); if (isSingleLine()) { + if (isSelected()) qp -> setBrush(Qt::red); singleLineProperties.draw( qp, middleSegment() -> isHorizontal() ? QET::Horizontal : QET::Vertical, - QRectF(middleSegment() -> middle() - QPointF(7.5, 7.5), QSizeF(15.0, 15.0)) + QRectF(middleSegment() -> middle() - QPointF(10.0, 7.5), QSizeF(20.0, 15.0)) ); + if (isSelected()) qp -> setBrush(Qt::NoBrush); } // dessin des points d'accroche du conducteur si celui-ci est selectionne @@ -1089,7 +1091,7 @@ void SingleLineProperties::draw(QPainter *painter, QET::ConductorSegmentType dir if (hasGround && i == 1) { drawGround(painter, direction, symbol_p2, symbol_width * 2.0); } else if (hasNeutral && ((i == 1 && !hasGround) || (i == 2 && hasGround))) { - drawNeutral(painter, direction, symbol_p2, symbol_width * 1.5); + drawNeutral(painter, direction, symbol_p2, symbol_width * 1.35); } } } else { @@ -1155,7 +1157,8 @@ void SingleLineProperties::drawNeutral(QPainter *painter, QET::ConductorSegmentT painter -> save(); // prepare le QPainter - painter -> setBrush(Qt::black); + if (painter -> brush() == Qt::NoBrush) painter -> setBrush(Qt::black); + painter -> setPen(Qt::NoPen); // desine le cercle representant le neutre painter -> drawEllipse( diff --git a/conductorproperties.cpp b/conductorproperties.cpp index be8fa5e65..6bbe013b0 100644 --- a/conductorproperties.cpp +++ b/conductorproperties.cpp @@ -101,6 +101,7 @@ void ConductorPropertiesWidget::updateSingleLineDisplay() { ground_checkbox -> setChecked(slp.hasGround); neutral_checkbox -> setChecked(slp.hasNeutral); phase_spinbox -> setValue(slp.phasesCount()); + phase_slider -> setValue(slp.phasesCount()); phase_checkbox -> setChecked(slp.phasesCount()); buildConnections(); updatePreview(); diff --git a/diagramview.cpp b/diagramview.cpp index e7806f5ff..0c19d3203 100644 --- a/diagramview.cpp +++ b/diagramview.cpp @@ -407,6 +407,23 @@ bool DiagramView::saveAs() { return(resultat_enregistrement); } +/** + Gere les actions liees a la rollette de la souris + @param e QWheelEvent decrivant l'evenement rollette +*/ +void DiagramView::wheelEvent(QWheelEvent *e) { + // si la touche Ctrl est enfoncee, on zoome / dezoome + if (e -> modifiers() & Qt::ControlModifier) { + if (e -> delta() > 0) { + zoomIn(); + } else { + zoomOut(); + } + } else { + QAbstractScrollArea::wheelEvent(e); + } +} + /** Methode privee gerant l'enregistrement du fichier XML. S'il n'est pas possible d'ecrire dans le fichier, cette fonction affiche un message d'erreur et renvoie false. diff --git a/diagramview.h b/diagramview.h index 083d12653..a3ca0251d 100644 --- a/diagramview.h +++ b/diagramview.h @@ -39,6 +39,9 @@ class DiagramView : public QGraphicsView { Diagram *diagram() { return(scene); } bool hasSelectedItems(); + protected: + virtual void wheelEvent(QWheelEvent *); + private: bool saveDiagramToFile(QString &); void mousePressEvent(QMouseEvent *); diff --git a/terminal.cpp b/terminal.cpp index 4a388f64f..bb11fe016 100644 --- a/terminal.cpp +++ b/terminal.cpp @@ -188,7 +188,7 @@ void Terminal::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { p -> setBrush(couleur_hovered); if (hovered) { p -> setRenderHint(QPainter::Antialiasing, true); - p -> drawEllipse(((int)f.x())-2, ((int)f.y())-2, 5, 5); + p -> drawEllipse(QRectF(f.x() - 2.5, f.y() - 2.5, 5.0, 5.0)); } else p -> drawPoint(f); p -> restore();