diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2014-11-28 13:57:00 +0100 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@digia.com> | 2015-03-26 11:01:26 +0100 |
commit | bf27bca43cc9971f99ee24988593c7d7afd50e71 (patch) | |
tree | 3b8e878ad25641887b8fc35915f57a77558fbb13 /tests/manual | |
parent | a955beb42388498a9ed5c426b9ae891ab56fa2f8 (diff) |
WIP: tests/manual/highdpi: Add line drawing test
Change-Id: I5b8c84ec496f584d489d5fea580e3ac76aa7a83f
Diffstat (limited to 'tests/manual')
-rw-r--r-- | tests/manual/highdpi/main.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/manual/highdpi/main.cpp b/tests/manual/highdpi/main.cpp index fd14523a97..ae2954cbb5 100644 --- a/tests/manual/highdpi/main.cpp +++ b/tests/manual/highdpi/main.cpp @@ -49,6 +49,7 @@ #include <QWindow> #include <QScreen> #include <QFile> +#include <QMouseEvent> #include <QTemporaryDir> #include <QCommandLineParser> #include <QCommandLineOption> @@ -461,6 +462,64 @@ public: } }; +class LinePainter : public QWidget +{ +public: + void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + + QPoint lastMousePoint; + QVector<QPoint> linePoints; +}; + +void LinePainter::paintEvent(QPaintEvent *) +{ + QPainter p(this); + p.fillRect(QRect(QPoint(0, 0), size()), QBrush(Qt::gray)); + + // Default antialiased line + p.setRenderHint(QPainter::Antialiasing); + p.drawLines(linePoints); + + // Cosmetic 1 antialiased line + QPen pen; + pen.setCosmetic(true); + pen.setWidth(1); + p.setPen(pen); + p.translate(3, 3); + p.drawLines(linePoints); + + // Aliased cosmetic 1 line + p.setRenderHint(QPainter::Antialiasing, false); + p.translate(3, 3); + p.drawLines(linePoints); +} + +void LinePainter::mousePressEvent(QMouseEvent *event) +{ + lastMousePoint = event->pos(); +} + +void LinePainter::mouseReleaseEvent(QMouseEvent *) +{ + lastMousePoint = QPoint(); +} + +void LinePainter::mouseMoveEvent(QMouseEvent *event) +{ + if (lastMousePoint.isNull()) + return; + + QPoint newMousePoint = event->pos(); + if (lastMousePoint == newMousePoint) + return; + linePoints.append(lastMousePoint); + linePoints.append(newMousePoint); + lastMousePoint = newMousePoint; + update(); +} int main(int argc, char **argv) { @@ -490,6 +549,9 @@ int main(int argc, char **argv) parser.addOption(iconDrawingOption); QCommandLineOption buttonsOption("buttons", "Test buttons"); parser.addOption(buttonsOption); + QCommandLineOption linePainterOption("linepainter", "Test line painting"); + parser.addOption(linePainterOption); + parser.process(app); @@ -550,6 +612,12 @@ int main(int argc, char **argv) buttons->show(); } + QScopedPointer<LinePainter> linePainter; + if (parser.isSet(linePainterOption)) { + linePainter.reset(new LinePainter); + linePainter->show(); + } + if (QApplication::topLevelWidgets().isEmpty()) parser.showHelp(0); |