mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-21 08:40:53 +01:00
Amelioration de la gestion de la grille en fonction du zoom utilise
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@110 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -168,7 +168,13 @@ void Conducer::priv_modifieConducer(const QPointF &p1, QET::Orientation, const Q
|
|||||||
// en deduit les coefficients de "redimensionnement"
|
// en deduit les coefficients de "redimensionnement"
|
||||||
qreal coeff_x = new_dist_2_terminals_x / orig_dist_2_terms_x;
|
qreal coeff_x = new_dist_2_terminals_x / orig_dist_2_terms_x;
|
||||||
qreal coeff_y = new_dist_2_terminals_y / orig_dist_2_terms_y;
|
qreal coeff_y = new_dist_2_terminals_y / orig_dist_2_terms_y;
|
||||||
|
/*
|
||||||
|
if (!orig_dist_2_terms_x || !orig_dist_2_terms_y) {
|
||||||
|
qDebug() << "ca va planter";
|
||||||
|
PR(coeff_x)
|
||||||
|
PR(coeff_y)
|
||||||
|
}
|
||||||
|
*/
|
||||||
// genere les nouveaux points
|
// genere les nouveaux points
|
||||||
int limite = moves_x.size() - 1;
|
int limite = moves_x.size() - 1;
|
||||||
int coeff = type_trajet_x ? 1 : -1;
|
int coeff = type_trajet_x ? 1 : -1;
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
|||||||
p -> setBrush(Qt::white);
|
p -> setBrush(Qt::white);
|
||||||
p -> drawRect(r);
|
p -> drawRect(r);
|
||||||
|
|
||||||
if (draw_grid && r.width() < 2500 && r.height() < 2500) {
|
if (draw_grid) {
|
||||||
// dessine les points de la grille
|
// dessine les points de la grille
|
||||||
p -> setPen(Qt::black);
|
p -> setPen(Qt::black);
|
||||||
p -> setBrush(Qt::NoBrush);
|
p -> setBrush(Qt::NoBrush);
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ void DiagramView::setSelectionMode() {
|
|||||||
*/
|
*/
|
||||||
void DiagramView::zoomPlus() {
|
void DiagramView::zoomPlus() {
|
||||||
scale(4.0/3.0, 4.0/3.0);
|
scale(4.0/3.0, 4.0/3.0);
|
||||||
|
adjustGridToZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -229,6 +230,7 @@ void DiagramView::zoomPlus() {
|
|||||||
*/
|
*/
|
||||||
void DiagramView::zoomMoins() {
|
void DiagramView::zoomMoins() {
|
||||||
scale(0.75, 0.75);
|
scale(0.75, 0.75);
|
||||||
|
adjustGridToZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -243,6 +245,7 @@ void DiagramView::zoomFit() {
|
|||||||
}
|
}
|
||||||
adjustSceneRect();
|
adjustSceneRect();
|
||||||
fitInView(sceneRect(), Qt::KeepAspectRatio);
|
fitInView(sceneRect(), Qt::KeepAspectRatio);
|
||||||
|
adjustGridToZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -250,6 +253,7 @@ void DiagramView::zoomFit() {
|
|||||||
*/
|
*/
|
||||||
void DiagramView::zoomReset() {
|
void DiagramView::zoomReset() {
|
||||||
resetMatrix();
|
resetMatrix();
|
||||||
|
adjustGridToZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -597,3 +601,23 @@ void DiagramView::adjustSceneRect() {
|
|||||||
// ajuste la sceneRect
|
// ajuste la sceneRect
|
||||||
setSceneRect(elements_bounding_rect.united(border_bounding_rect));
|
setSceneRect(elements_bounding_rect.united(border_bounding_rect));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramView::adjustGridToZoom() {
|
||||||
|
QRectF viewed_scene = viewedSceneRect();
|
||||||
|
scene -> setDisplayGrid(viewed_scene.width() < 2000 || viewed_scene.height() < 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF DiagramView::viewedSceneRect() const {
|
||||||
|
// recupere la taille du widget viewport
|
||||||
|
QSize viewport_size = viewport() -> size();
|
||||||
|
|
||||||
|
// recupere la transformation viewport -> scene
|
||||||
|
QTransform view_to_scene = viewportTransform().inverted();
|
||||||
|
|
||||||
|
// mappe le coin superieur gauche et le coin inferieur droit de la viewport sur la scene
|
||||||
|
QPointF scene_left_top = view_to_scene.map(QPointF(0.0, 0.0));
|
||||||
|
QPointF scene_right_bottom = view_to_scene.map(QPointF(viewport_size.width(), viewport_size.height()));
|
||||||
|
|
||||||
|
// en deduit le rectangle visualise par la scene
|
||||||
|
return(QRectF(scene_left_top, scene_right_bottom));
|
||||||
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ class DiagramView : public QGraphicsView {
|
|||||||
void dragLeaveEvent(QDragLeaveEvent *);
|
void dragLeaveEvent(QDragLeaveEvent *);
|
||||||
void dragMoveEvent(QDragMoveEvent *);
|
void dragMoveEvent(QDragMoveEvent *);
|
||||||
void dropEvent(QDropEvent *);
|
void dropEvent(QDropEvent *);
|
||||||
|
QRectF viewedSceneRect() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void selectionChanged();
|
void selectionChanged();
|
||||||
@@ -75,5 +76,6 @@ class DiagramView : public QGraphicsView {
|
|||||||
private slots:
|
private slots:
|
||||||
void flushGarbage();
|
void flushGarbage();
|
||||||
void slot_selectionChanged();
|
void slot_selectionChanged();
|
||||||
|
void adjustGridToZoom();
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user