summaryrefslogtreecommitdiffstats
path: root/examples/svg/svgviewer/svgview.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-11 10:00:33 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-11 17:06:54 +0000
commit99303e92ae9cf461f99b8eff8b37b42f758118b6 (patch)
tree7dd56787ed2e9ed711b599913bcb66e91e14b631 /examples/svg/svgviewer/svgview.cpp
parent86b82a0eea6c26fba34a9d2049935a18a088f3e7 (diff)
Polish the SVG viewer example.
- Use Qt 5 connection syntax, demonstrating lambdas. - Use QCommandLineParser. - Improve error handling. - Use Mime API of QFileDialog, point to pictures location initially. - Prevent the application from shrinking when loading small images. - Minor polishing, status messages on loading, About Qt dialog. Change-Id: I76f14001c9ab12cbfaaacc2ca4828b404e4b13b2 Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
Diffstat (limited to 'examples/svg/svgviewer/svgview.cpp')
-rw-r--r--examples/svg/svgviewer/svgview.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/examples/svg/svgviewer/svgview.cpp b/examples/svg/svgviewer/svgview.cpp
index 5283bf1..dd9de1a 100644
--- a/examples/svg/svgviewer/svgview.cpp
+++ b/examples/svg/svgviewer/svgview.cpp
@@ -39,7 +39,8 @@
****************************************************************************/
#include "svgview.h"
-#include <QFile>
+#include <QSvgRenderer>
+
#include <QWheelEvent>
#include <QMouseEvent>
#include <QGraphicsRectItem>
@@ -54,9 +55,9 @@
SvgView::SvgView(QWidget *parent)
: QGraphicsView(parent)
, m_renderer(Native)
- , m_svgItem(0)
- , m_backgroundItem(0)
- , m_outlineItem(0)
+ , m_svgItem(nullptr)
+ , m_backgroundItem(nullptr)
+ , m_outlineItem(nullptr)
{
setScene(new QGraphicsScene(this));
setTransformationAnchor(AnchorUnderMouse);
@@ -83,20 +84,26 @@ void SvgView::drawBackground(QPainter *p, const QRectF &)
p->restore();
}
-void SvgView::openFile(const QFile &file)
+QSize SvgView::svgSize() const
{
- if (!file.exists())
- return;
+ return m_svgItem ? m_svgItem->boundingRect().size().toSize() : QSize();
+}
+bool SvgView::openFile(const QString &fileName)
+{
QGraphicsScene *s = scene();
- bool drawBackground = (m_backgroundItem ? m_backgroundItem->isVisible() : false);
- bool drawOutline = (m_outlineItem ? m_outlineItem->isVisible() : true);
+ const bool drawBackground = (m_backgroundItem ? m_backgroundItem->isVisible() : false);
+ const bool drawOutline = (m_outlineItem ? m_outlineItem->isVisible() : true);
+
+ QScopedPointer<QGraphicsSvgItem> svgItem(new QGraphicsSvgItem(fileName));
+ if (!svgItem->renderer()->isValid())
+ return false;
s->clear();
resetTransform();
- m_svgItem = new QGraphicsSvgItem(file.fileName());
+ m_svgItem = svgItem.take();
m_svgItem->setFlags(QGraphicsItem::ItemClipsToShape);
m_svgItem->setCacheMode(QGraphicsItem::NoCache);
m_svgItem->setZValue(0);
@@ -120,6 +127,7 @@ void SvgView::openFile(const QFile &file)
s->addItem(m_outlineItem);
s->setSceneRect(m_outlineItem->boundingRect().adjusted(-10, -10, 10, 10));
+ return true;
}
void SvgView::setRenderer(RendererType type)