Nominate our 2022 Qt Champions!

Problem when exporting graphic to file after calling fitInView()

  • Hi, I'm writing an app which draws a graphic in a QGraphicsView and if the scene rect changes, it calls fitInView() in order to rescale the graph and make it easier to analyze. This is what I see on the screen:

    ! image)!

    I'm trying to add the option to export the graphic to a svg file, but this is what I get:

    ! image)!

    This is the code I'm calling when the rect changes:

    @void Mainview::_on_scene_rect_changed(QRectF rect)
    _plotview->fitInView(rect); // _plotview is a QGraphicsView *

    And this is the function to export to SVG, which creates the incorrect image:

    @void Mainview::on__file_export_to_svg_action_triggered()
    QString filename = QFileDialog::getSaveFileName(this, tr("Save SVG"), "", tr("SVG files (*.svg)"));

    if (filename.isEmpty())
    QSvgGenerator generator;
    int width = _plotview->geometry().width();
    int height = _plotview->geometry().height();
    generator.setSize(QSize(width, height));
    generator.setViewBox(QRect(0, 0, width, height));
    QPainter painter;


    I've tried different things with the matrix and transformation of the view, but I didn't succeed in having the image I see on the screen to a file. If I call:

    @ _plotview->fitInView(rect, Qt::KeepAspectRatio);

    the output I get in the file is the same as the one I see on the screen, but I don't intend to keep the aspect ratio of the graphic. What am I doing wrong? Any hint will be much appreciated. :-)
    Thanks for reading!

Log in to reply