aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authorHatem ElKharashy <hatem.elkharashy@qt.io>2024-03-26 11:35:23 +0200
committerHatem ElKharashy <hatem.elkharashy@qt.io>2024-03-28 19:26:17 +0000
commit25ea0e26e8781ad02d6a9752964075ed8bf43052 (patch)
tree55a699772462378377e20fd60036a3bbf6789393 /tests/manual
parent12493163e8e746c52aa1580a9e413bc38cf7a4be (diff)
tests: tweak svg manual test
Make the QSvgRenderer, and svgtoqml scalable. Without scaling, it is hard to compare SVG files that have small size. Previously, only the VectorImage widget was scalable. Moreover, add the current scale slider value to the settings so that it can be retrieved the next time the application is used. Change-Id: I79dacd37e02b268ad8d2aadb71cc7d9d86e9b35a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/svg/QmlGenerator.qml6
-rw-r--r--tests/manual/svg/mainwindow.cpp9
-rw-r--r--tests/manual/svg/mainwindow.h1
-rw-r--r--tests/manual/svg/svgpainter.cpp34
-rw-r--r--tests/manual/svg/svgpainter.h11
5 files changed, 51 insertions, 10 deletions
diff --git a/tests/manual/svg/QmlGenerator.qml b/tests/manual/svg/QmlGenerator.qml
index b9db2a44c2..96435ba4f0 100644
--- a/tests/manual/svg/QmlGenerator.qml
+++ b/tests/manual/svg/QmlGenerator.qml
@@ -6,8 +6,10 @@ import SvgImageTest
Item {
id: item
- width: childrenRect.width
- height: childrenRect.height
+ width: childrenRect.width * (SvgManager.scale / 10.0)
+ height: childrenRect.height * (SvgManager.scale / 10.0)
+ scale: SvgManager.scale / 10
+ transformOrigin: Item.TopLeft
property var dynamicObject: null
Connections {
diff --git a/tests/manual/svg/mainwindow.cpp b/tests/manual/svg/mainwindow.cpp
index 9e41b9a89c..403202514b 100644
--- a/tests/manual/svg/mainwindow.cpp
+++ b/tests/manual/svg/mainwindow.cpp
@@ -54,6 +54,10 @@ MainWindow::MainWindow(QWidget *parent)
setDirList(list);
connect(ui->hsScale, &QAbstractSlider::valueChanged, m_manager, &SvgManager::setScale);
+ connect(ui->hsScale, &QAbstractSlider::valueChanged, m_svgPainter, &SvgPainter::setScale);
+ connect(ui->hsScale, &QAbstractSlider::valueChanged, this, &MainWindow::setScale);
+ int scale = m_settings->value(QStringLiteral("scale"), 10).toInt();
+ ui->hsScale->setValue(scale);
}
void MainWindow::loadDirectory(const QString &newDir)
@@ -70,6 +74,11 @@ void MainWindow::setDirList(const QStringList &list)
m_settings->setValue(QStringLiteral("directories"), list.join(QLatin1Char(',')));
}
+void MainWindow::setScale(const int scale)
+{
+ m_settings->setValue(QStringLiteral("scale"), scale);
+}
+
void MainWindow::updateCurrentDir(const QString &s)
{
QStringList list;
diff --git a/tests/manual/svg/mainwindow.h b/tests/manual/svg/mainwindow.h
index 2decd13ae3..81e4bea113 100644
--- a/tests/manual/svg/mainwindow.h
+++ b/tests/manual/svg/mainwindow.h
@@ -34,6 +34,7 @@ private slots:
private:
void updateCurrentDir(const QString &newDir);
void setDirList(const QStringList &list);
+ void setScale(const int scale);
Ui::MainWindow *ui;
SvgManager *m_manager = nullptr;
diff --git a/tests/manual/svg/svgpainter.cpp b/tests/manual/svg/svgpainter.cpp
index 1e73a28e85..e040c1d087 100644
--- a/tests/manual/svg/svgpainter.cpp
+++ b/tests/manual/svg/svgpainter.cpp
@@ -12,12 +12,13 @@ SvgPainter::SvgPainter(QWidget *parent)
#else
: QWidget{parent}
#endif
+ , m_scale(10)
{
#ifndef SVGWIDGET
connect(this, SIGNAL(sourceChanged()), this, SLOT(update()));
#endif
- setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+ connect(this, SIGNAL(scaleChanged()), this, SLOT(update()));
}
QUrl SvgPainter::source() const
@@ -36,14 +37,30 @@ void SvgPainter::setSource(const QUrl &newSource)
emit sourceChanged();
}
+qreal SvgPainter::scale() const
+{
+ return m_scale;
+}
+
+void SvgPainter::setScale(const qreal scale)
+{
+ if (m_scale == scale)
+ return;
+ m_scale = scale;
+ emit scaleChanged();
+}
+
#ifndef SVGWIDGET
QSize SvgPainter::sizeHint() const
{
- return !m_source.isEmpty() ? m_size : QSize(1, 1);
+ return !m_source.isEmpty() ? m_size * m_scale / 10.0 : QSize(1, 1);
}
+#endif
-void SvgPainter::paintEvent(QPaintEvent *)
+void SvgPainter::paintEvent(QPaintEvent *event)
{
+#ifndef SVGWIDGET
+ Q_UNUSED(event)
if (!m_source.isEmpty()) {
QPainter p(this);
p.fillRect(rect(), Qt::white);
@@ -52,8 +69,13 @@ void SvgPainter::paintEvent(QPaintEvent *)
renderer.setAspectRatioMode(Qt::KeepAspectRatio);
renderer.render(&p);
m_size = renderer.defaultSize();
- setMaximumSize(m_size);
- setMinimumSize(m_size);
+ setFixedSize(m_size * m_scale / 10.0);
}
-}
+#else
+ m_size = renderer()->defaultSize();
+ setFixedSize(m_size * m_scale / 10.0);
+ QSvgWidget::paintEvent(event);
#endif
+
+}
+
diff --git a/tests/manual/svg/svgpainter.h b/tests/manual/svg/svgpainter.h
index 07af46f173..5e8a641bd7 100644
--- a/tests/manual/svg/svgpainter.h
+++ b/tests/manual/svg/svgpainter.h
@@ -18,25 +18,32 @@ class SvgPainter : public QWidget
{
Q_OBJECT
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
+ Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
public:
explicit SvgPainter(QWidget *parent = nullptr);
QUrl source() const;
void setSource(const QUrl &newSource);
+ qreal scale() const;
+ void setScale(const qreal scale);
signals:
void sourceChanged();
+ void scaleChanged();
+
-#ifndef SVGWIDGET
protected:
+#ifndef SVGWIDGET
QSize sizeHint() const override;
- void paintEvent(QPaintEvent *) override;
#endif
+ void paintEvent(QPaintEvent *) override;
+
private:
QUrl m_source;
QSize m_size;
+ qreal m_scale;
};
#endif // SVGPAINTER_H