mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-21 16:50: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:
@@ -94,7 +94,7 @@ void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
|
||||
qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString("dd/MM/yyyy"));
|
||||
|
||||
qp -> drawRect(inset_title);
|
||||
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document: ") + bi_title);
|
||||
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document : ") + bi_title);
|
||||
|
||||
qp -> drawRect(inset_file);
|
||||
qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename);
|
||||
|
||||
@@ -168,7 +168,13 @@ void Conducer::priv_modifieConducer(const QPointF &p1, QET::Orientation, const Q
|
||||
// en deduit les coefficients de "redimensionnement"
|
||||
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;
|
||||
|
||||
/*
|
||||
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
|
||||
int limite = moves_x.size() - 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 -> drawRect(r);
|
||||
|
||||
if (draw_grid && r.width() < 2500 && r.height() < 2500) {
|
||||
if (draw_grid) {
|
||||
// dessine les points de la grille
|
||||
p -> setPen(Qt::black);
|
||||
p -> setBrush(Qt::NoBrush);
|
||||
|
||||
@@ -222,6 +222,7 @@ void DiagramView::setSelectionMode() {
|
||||
*/
|
||||
void DiagramView::zoomPlus() {
|
||||
scale(4.0/3.0, 4.0/3.0);
|
||||
adjustGridToZoom();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,6 +230,7 @@ void DiagramView::zoomPlus() {
|
||||
*/
|
||||
void DiagramView::zoomMoins() {
|
||||
scale(0.75, 0.75);
|
||||
adjustGridToZoom();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -243,6 +245,7 @@ void DiagramView::zoomFit() {
|
||||
}
|
||||
adjustSceneRect();
|
||||
fitInView(sceneRect(), Qt::KeepAspectRatio);
|
||||
adjustGridToZoom();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -250,6 +253,7 @@ void DiagramView::zoomFit() {
|
||||
*/
|
||||
void DiagramView::zoomReset() {
|
||||
resetMatrix();
|
||||
adjustGridToZoom();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -597,3 +601,23 @@ void DiagramView::adjustSceneRect() {
|
||||
// ajuste la sceneRect
|
||||
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 dragMoveEvent(QDragMoveEvent *);
|
||||
void dropEvent(QDropEvent *);
|
||||
QRectF viewedSceneRect() const;
|
||||
|
||||
signals:
|
||||
void selectionChanged();
|
||||
@@ -75,5 +76,6 @@ class DiagramView : public QGraphicsView {
|
||||
private slots:
|
||||
void flushGarbage();
|
||||
void slot_selectionChanged();
|
||||
void adjustGridToZoom();
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user