From d3d269e46380a9589494d88ccdd99688adf792c5 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 29 Nov 2019 09:24:42 +0000 Subject: [PATCH] remove manual QGraphicsView benchmarks Signed-off-by: Ivailo Monev --- .../qgraphicsview/benchapps/chipTest/chip.cpp | 176 -------------- .../qgraphicsview/benchapps/chipTest/chip.h | 60 ----- .../qgraphicsview/benchapps/chipTest/chip.pro | 19 -- .../qgraphicsview/benchapps/chipTest/fileprint.png | Bin 1456 -> 0 bytes .../qgraphicsview/benchapps/chipTest/images.qrc | 10 - .../qgraphicsview/benchapps/chipTest/main.cpp | 57 ----- .../benchapps/chipTest/mainwindow.cpp | 87 ------- .../qgraphicsview/benchapps/chipTest/mainwindow.h | 53 ----- .../qgraphicsview/benchapps/chipTest/qt4logo.png | Bin 48333 -> 0 bytes .../benchapps/chipTest/rotateleft.png | Bin 1754 -> 0 bytes .../benchapps/chipTest/rotateright.png | Bin 1732 -> 0 bytes .../qgraphicsview/benchapps/chipTest/view.cpp | 264 --------------------- .../qgraphicsview/benchapps/chipTest/view.h | 77 ------ .../qgraphicsview/benchapps/chipTest/zoomin.png | Bin 1622 -> 0 bytes .../qgraphicsview/benchapps/chipTest/zoomout.png | Bin 1601 -> 0 bytes .../qgraphicsview/benchapps/moveItems/main.cpp | 112 --------- .../benchapps/moveItems/moveItems.pro | 1 - .../qgraphicsview/benchapps/scrolltest/main.cpp | 152 ------------ .../benchapps/scrolltest/scrolltest.pro | 1 - 19 files changed, 1069 deletions(-) delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/images.qrc delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateleft.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateright.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp delete mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp deleted file mode 100644 index 98d441897..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "chip.h" - -#include - -Chip::Chip(const QColor &color, int x, int y) -{ - this->x = x; - this->y = y; - this->color = color; - setZValue((x + y) % 2); - - setFlags(ItemIsSelectable | ItemIsMovable); - setAcceptHoverEvents(true); -} - -QRectF Chip::boundingRect() const -{ - return QRectF(0, 0, 110, 70); -} - -QPainterPath Chip::shape() const -{ - QPainterPath path; - path.addRect(14, 14, 82, 42); - return path; -} - -void Chip::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - Q_UNUSED(widget); - - QColor fillColor = (option->state & QStyle::State_Selected) ? color.dark(150) : color; - if (option->state & QStyle::State_MouseOver) - fillColor = fillColor.light(125); - - if (option->levelOfDetail < 0.2) { - if (option->levelOfDetail < 0.125) { - painter->fillRect(QRectF(0, 0, 110, 70), fillColor); - return; - } - - painter->setPen(QPen(Qt::black, 0)); - painter->setBrush(fillColor); - painter->drawRect(13, 13, 97, 57); - return; - } - - QPen oldPen = painter->pen(); - QPen pen = oldPen; - int width = 0; - if (option->state & QStyle::State_Selected) - width += 2; - - pen.setWidth(width); - painter->setBrush(QBrush(fillColor.dark(option->state & QStyle::State_Sunken ? 120 : 100))); - - painter->drawRect(QRect(14, 14, 79, 39)); - if (option->levelOfDetail >= 1) { - painter->setPen(QPen(Qt::gray, 1)); - painter->drawLine(15, 54, 94, 54); - painter->drawLine(94, 53, 94, 15); - painter->setPen(QPen(Qt::black, 0)); - } - - // Draw text - if (option->levelOfDetail >= 2) { - QFont font("Times", 10); - font.setStyleStrategy(QFont::ForceOutline); - painter->setFont(font); - painter->save(); - painter->scale(0.1, 0.1); - painter->drawText(170, 180, QString("Model: VSC-2000 (Very Small Chip) at %1x%2").arg(x).arg(y)); - painter->drawText(170, 200, QLatin1String("Serial number: DLWR-WEER-123L-ZZ33-SDSJ")); - painter->drawText(170, 220, QLatin1String("Manufacturer: Chip Manufacturer")); - painter->restore(); - } - - // Draw lines - QVarLengthArray lines; - if (option->levelOfDetail >= 0.5) { - for (int i = 0; i <= 10; i += (option->levelOfDetail > 0.5 ? 1 : 2)) { - lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5)); - lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62)); - } - for (int i = 0; i <= 6; i += (option->levelOfDetail > 0.5 ? 1 : 2)) { - lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5)); - lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5)); - } - } - if (option->levelOfDetail >= 0.4) { - const QLineF lineData[] = { - QLineF(25, 35, 35, 35), - QLineF(35, 30, 35, 40), - QLineF(35, 30, 45, 35), - QLineF(35, 40, 45, 35), - QLineF(45, 30, 45, 40), - QLineF(45, 35, 55, 35) - }; - lines.append(lineData, 6); - } - painter->drawLines(lines.data(), lines.size()); - - // Draw red ink - if (stuff.size() > 1) { - painter->setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - painter->setBrush(Qt::NoBrush); - QPainterPath path; - path.moveTo(stuff.first()); - for (int i = 1; i < stuff.size(); ++i) - path.lineTo(stuff.at(i)); - painter->drawPath(path); - } -} - -void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsItem::mousePressEvent(event); - update(); -} - -void Chip::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if (event->modifiers() & Qt::ShiftModifier) { - stuff << event->pos(); - update(); - return; - } - QGraphicsItem::mouseMoveEvent(event); -} - -void Chip::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsItem::mouseReleaseEvent(event); - update(); -} diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h deleted file mode 100644 index ef2b467eb..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef CHIP_H -#define CHIP_H - -#include -#include - -class Chip : public QGraphicsItem -{ -public: - Chip(const QColor &color, int x, int y); - - QRectF boundingRect() const; - QPainterPath shape() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget); - -protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - -private: - int x, y; - QColor color; - QList stuff; -}; - -#endif diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro deleted file mode 100644 index 53fa23b98..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro +++ /dev/null @@ -1,19 +0,0 @@ -RESOURCES += images.qrc - -HEADERS += mainwindow.h view.h chip.h -SOURCES += main.cpp -SOURCES += mainwindow.cpp view.cpp chip.cpp - -contains(QT_CONFIG, opengl):QT += opengl - -build_all:!build_pass { - CONFIG -= build_all - CONFIG += release -} - -# install -target.path = $$[QT_INSTALL_DEMOS]/chip -sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.pro *.html *.doc images -sources.path = $$[QT_INSTALL_DEMOS]/chip -INSTALLS += target sources - diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png deleted file mode 100644 index ba7c02dc18d3145ffc2565afd7761cf8d3bbea99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmV;h1yA~kP)b-8&)Yht(3npj! zhVZz-1RFN&M_Jjs*iyCsr1Br})rl5`9!vdS1b~`S#iy$JW0wVxgL2xnlvejVftS)` zTKUc6;s?zyOrQ~b4PSpzcWVZ4(}_)5%DYZrOq#!QQ`PI0w4^^aL2|-VFePLo-nasN z*IK{-{nt6Te1OXfI6O;fodf8H!d2_Ev=sjnEGa1o(b3Tl5_n}VWUm)KAEByLKX9faxzp;q-{ z>lTYhucS2H_>FX@YA5Z$@Dy-s3>f$m7#f)`>;2jfo|YtOx5wjoB=}+neBJL?ffbTv zfBCMO^w=tAkqc_N@rAcvg)IH?>4}DuF+}ni$veda50xlz zt)=B6k$96%pJo?^z%^$>&$TW{BVO2LH-dO3l7yfjEpFY8fW?x5LqQUtv$GSD+YMuEJR-uvpwVhzFlgX$`>|^E zYT=ym@o{8iWMoD}L`)w#bf|zJuiZyLz(v{F*tvNb6ir(H{*zI;Y z9>eg^5T>j%h>M9sFx0ezpyPT40fGFLmzP(>a-2DHMgV4IWg#UcMF21vcf&dl5fBrz zG=bHeW$;rtmDJc;eGYPwgH7zbKMpsuC1_lPi z@L49UR*NulRBmoAmM>q9=*Va|Jr1axufdtDLX&dtewzjd2S>6L9I>&nsHv&J;NT#- zySvfQ&>$+0i;EL!GMT`|Fahh&UG(()f>RBr@KQ+y;*yQ9OE&*P2Z|sd879u3KaVwQ z)+{oor>6@bzSi8_LNaL(85t?&Fg-nqt5>fIx!k-*$N*KZR3b4kQMhl}GK-Ps6CzB* zn~Z%;>pIfBv97Kzk%t}FfNaML7cK~Cbh;26Ir0e&+$Dycl9Gyqghb@$=cA&cf|Y<@ z@gpxc&)(P9_dG$|6d*jrdnBtZDk@T1T3QxAlQa*dz5Sxn)^#{D?mf0*?u}E%yICkwE#w=FOWGvZK<`(V-kXctBaZ_E}}e zj#}mD(JPA0HV@p`*r<>h=zE7BDc_+q-}kl)5Cpb=AlNAs>*>{SgEkw#4y}~mQNCv~ zrMGY2{-#1Zm|q8tl+_CrKNyc9V3*tzn - - qt4logo.png - zoomin.png - zoomout.png - rotateleft.png - rotateright.png - fileprint.png - - diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp deleted file mode 100644 index 2208ade80..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "mainwindow.h" - -#include - -int main(int argc, char **argv) -{ - Q_INIT_RESOURCE(images); - - QApplication app(argc, argv); - app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); - - MainWindow window; - window.show(); - - return app.exec(); -} diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp deleted file mode 100644 index 06f4fe53f..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "mainwindow.h" -#include "view.h" -#include "chip.h" - -#include - -MainWindow::MainWindow(QWidget *parent) - : QWidget(parent) -{ - populateScene(); - - View *view = new View("Top left view"); - view->view()->setScene(scene); - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget(view); - setLayout(layout); - - setWindowTitle(tr("Chip Demo")); -} - -void MainWindow::populateScene() -{ - scene = new QGraphicsScene; - - QImage image(":/qt4logo.png"); - - // Populate scene - int xx = 0; - int nitems = 0; - for (int i = -11000; i < 11000; i += 110) { - ++xx; - int yy = 0; - for (int j = -7000; j < 7000; j += 70) { - ++yy; - qreal x = (i + 11000) / 22000.0; - qreal y = (j + 7000) / 14000.0; - - QColor color(image.pixel(int(image.width() * x), int(image.height() * y))); - QGraphicsItem *item = new Chip(color, xx, yy); - item->setPos(QPointF(i, j)); - scene->addItem(item); - - ++nitems; - } - } -} diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h deleted file mode 100644 index 32fbad0b2..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include -#include - -class MainWindow : public QWidget -{ - Q_OBJECT -public: - MainWindow(QWidget *parent = 0); - -private: - void setupMatrix(); - void populateScene(); - - QGraphicsScene *scene; -}; - -#endif diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png deleted file mode 100644 index 157e86ed6476dcf64f8aceb17ac47a0893eaae5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48333 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 a8UFw|)e>7p%to*P0000 - -#ifdef Q_WS_WIN -#define CALLGRIND_START_INSTRUMENTATION {} -#define CALLGRIND_STOP_INSTRUMENTATION {} -#else -#include "valgrind/callgrind.h" -#endif - -#ifndef QT_NO_OPENGL -#include -#endif - -#include - -class CountView : public QGraphicsView -{ -protected: - void paintEvent(QPaintEvent *event) - { - static int n = 0; - if (n) - CALLGRIND_START_INSTRUMENTATION - QGraphicsView::paintEvent(event); - if (n) - CALLGRIND_STOP_INSTRUMENTATION - if (++n == 500) - qApp->quit(); - } -}; - -View::View(const QString &name, QWidget *parent) - : QFrame(parent) -{ - setFrameStyle(Sunken | StyledPanel); - graphicsView = new CountView; - graphicsView->setRenderHint(QPainter::Antialiasing, false); - graphicsView->setDragMode(QGraphicsView::RubberBandDrag); - graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); - - int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize); - QSize iconSize(size, size); - - QToolButton *zoomInIcon = new QToolButton; - zoomInIcon->setAutoRepeat(true); - zoomInIcon->setAutoRepeatInterval(33); - zoomInIcon->setAutoRepeatDelay(0); - zoomInIcon->setIcon(QPixmap(":/zoomin.png")); - zoomInIcon->setIconSize(iconSize); - QToolButton *zoomOutIcon = new QToolButton; - zoomOutIcon->setAutoRepeat(true); - zoomOutIcon->setAutoRepeatInterval(33); - zoomOutIcon->setAutoRepeatDelay(0); - zoomOutIcon->setIcon(QPixmap(":/zoomout.png")); - zoomOutIcon->setIconSize(iconSize); - zoomSlider = new QSlider; - zoomSlider->setMinimum(0); - zoomSlider->setMaximum(500); - zoomSlider->setValue(250); - zoomSlider->setTickPosition(QSlider::TicksRight); - - // Zoom slider layout - QVBoxLayout *zoomSliderLayout = new QVBoxLayout; - zoomSliderLayout->addWidget(zoomInIcon); - zoomSliderLayout->addWidget(zoomSlider); - zoomSliderLayout->addWidget(zoomOutIcon); - - QToolButton *rotateLeftIcon = new QToolButton; - rotateLeftIcon->setIcon(QPixmap(":/rotateleft.png")); - rotateLeftIcon->setIconSize(iconSize); - QToolButton *rotateRightIcon = new QToolButton; - rotateRightIcon->setIcon(QPixmap(":/rotateright.png")); - rotateRightIcon->setIconSize(iconSize); - rotateSlider = new QSlider; - rotateSlider->setOrientation(Qt::Horizontal); - rotateSlider->setMinimum(-360); - rotateSlider->setMaximum(360); - rotateSlider->setValue(0); - rotateSlider->setTickPosition(QSlider::TicksBelow); - - // Rotate slider layout - QHBoxLayout *rotateSliderLayout = new QHBoxLayout; - rotateSliderLayout->addWidget(rotateLeftIcon); - rotateSliderLayout->addWidget(rotateSlider); - rotateSliderLayout->addWidget(rotateRightIcon); - - resetButton = new QToolButton; - resetButton->setText(tr("0")); - resetButton->setEnabled(false); - - // Label layout - QHBoxLayout *labelLayout = new QHBoxLayout; - label = new QLabel(name); - antialiasButton = new QToolButton; - antialiasButton->setText(tr("Antialiasing")); - antialiasButton->setCheckable(true); - antialiasButton->setChecked(false); - openGlButton = new QToolButton; - openGlButton->setText(tr("OpenGL")); - openGlButton->setCheckable(true); -#ifndef QT_NO_OPENGL - openGlButton->setEnabled(QGLFormat::hasOpenGL()); -#else - openGlButton->setEnabled(false); -#endif - printButton = new QToolButton; - printButton->setIcon(QIcon(QPixmap(":/fileprint.png"))); - - labelLayout->addWidget(label); - labelLayout->addStretch(); - labelLayout->addWidget(antialiasButton); - labelLayout->addWidget(openGlButton); - labelLayout->addWidget(printButton); - - QGridLayout *topLayout = new QGridLayout; - topLayout->addLayout(labelLayout, 0, 0); - topLayout->addWidget(graphicsView, 1, 0); - topLayout->addLayout(zoomSliderLayout, 1, 1); - topLayout->addLayout(rotateSliderLayout, 2, 0); - topLayout->addWidget(resetButton, 2, 1); - setLayout(topLayout); - - connect(resetButton, SIGNAL(clicked()), this, SLOT(resetView())); - connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix())); - connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix())); - connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled())); - connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled())); - connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing())); - connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL())); - connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft())); - connect(rotateRightIcon, SIGNAL(clicked()), this, SLOT(rotateRight())); - connect(zoomInIcon, SIGNAL(clicked()), this, SLOT(zoomIn())); - connect(zoomOutIcon, SIGNAL(clicked()), this, SLOT(zoomOut())); - connect(printButton, SIGNAL(clicked()), this, SLOT(print())); - - setupMatrix(); - - startTimer(0); -} - -QGraphicsView *View::view() const -{ - return graphicsView; -} - -void View::resetView() -{ - zoomSlider->setValue(250); - rotateSlider->setValue(0); - setupMatrix(); - graphicsView->ensureVisible(QRectF(0, 0, 0, 0)); - - resetButton->setEnabled(false); -} - -void View::setResetButtonEnabled() -{ - resetButton->setEnabled(true); -} - -void View::setupMatrix() -{ - qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50)); - - QMatrix matrix; - matrix.scale(scale, scale); - matrix.rotate(rotateSlider->value()); - - graphicsView->setMatrix(matrix); - setResetButtonEnabled(); -} - -void View::toggleOpenGL() -{ -#ifndef QT_NO_OPENGL - graphicsView->setViewport(openGlButton->isChecked() ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : new QWidget); -#endif -} - -void View::toggleAntialiasing() -{ - graphicsView->setRenderHint(QPainter::Antialiasing, antialiasButton->isChecked()); -} - -void View::print() -{ -#ifndef QT_NO_PRINTER - QPrinter printer; - QPrintDialog dialog(&printer, this); - if (dialog.exec() == QDialog::Accepted) { - QPainter painter(&printer); - graphicsView->render(&painter); - } -#endif -} - -void View::zoomIn() -{ - zoomSlider->setValue(zoomSlider->value() + 1); -} - -void View::zoomOut() -{ - zoomSlider->setValue(zoomSlider->value() - 1); -} - -void View::rotateLeft() -{ - rotateSlider->setValue(rotateSlider->value() - 10); -} - -void View::rotateRight() -{ - rotateSlider->setValue(rotateSlider->value() + 10); -} - -void View::timerEvent(QTimerEvent *) -{ - graphicsView->horizontalScrollBar()->setValue(graphicsView->horizontalScrollBar()->value() + 1); -} - diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h deleted file mode 100644 index dc2bd4412..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef VIEW_H -#define VIEW_H - -#include -#include -#include -#include -#include - -class View : public QFrame -{ - Q_OBJECT -public: - View(const QString &name, QWidget *parent = 0); - - QGraphicsView *view() const; - -private slots: - void resetView(); - void setResetButtonEnabled(); - void setupMatrix(); - void toggleOpenGL(); - void toggleAntialiasing(); - void print(); - - void zoomIn(); - void zoomOut(); - void rotateLeft(); - void rotateRight(); - - void timerEvent(QTimerEvent *); - -private: - QGraphicsView *graphicsView; - QLabel *label; - QToolButton *openGlButton; - QToolButton *antialiasButton; - QToolButton *printButton; - QToolButton *resetButton; - QSlider *zoomSlider; - QSlider *rotateSlider; -}; - -#endif diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png deleted file mode 100644 index 8b0daeea4801323d5ca253f7ee4d9215e60903ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1622 zcmV-c2C4apP);FX zK~z}7#g=VMQ)d*%`RX^m;|KQ!xFyT7eRJ8yGW}qdEiOh;V@zG<=0sK?NZlyd2@Kh+ z;0v3AP*9dXZNl`oeKwYp4EP*j4#GBc_h1@5@< zdKY)r($xo{yPrFyXQ8Jb?frwe-Z#L{lD!MA<~_=_-v^04XV%nv0iS`Yy6b$w~g6O7x`BUU{VfiHXWEj{#WCV5n{4 z>ZTqiMN=u-di&8eIK!1Cf!jC^cA?dz(6eAV^@8 za!RWho!AxRjP&7h3zUr31d{seIk0bfu7Qw{Xic`dkPDD{oj}AvL_JUSCxuhp9q!1< zIXNY9K3G`5{KJQQ?U?QzJOjuv!O)-~_?H$NeU0`Yt$H9Yg6?2M&giO21WP?^~MfKVJXgltY*2J|i#jamj zMwl)nyLX41C6Z7?$zlRGW7fbRvR{EUb}g<* zUlPKT>*BY8!a&|9U|!u2N(K?k9$$s&dp~4<6Zm3?HFZ7^&0BzsuL6D3z6=z4au|do z%MEdYLF~XJgD8*m!&%7-Ajq-75sNiS?*aHftla^=DZ2uMjtd_%2o-~dFfxb> zuc1WhhZ8#jRL_lE1Q5+zh@@=+zCUdZ5ZY8hz(gjNI7Bjo*vTMX$CVI2#DDP=gy{Hb zTWKZ~p9T2FeCjVWpZ|zKWMIif5Gf2|7l+9G+7Hp2{r`ekj(8O^AYM_M{Cy8?^cQSt zA2Nt^22qXqUIt;>h0c?2AZqj5Sal8jvcV?t0r0=tAHk~7 U)bUA|oB#j-07*qoM6N<$f<#*pbpQYW diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png deleted file mode 100644 index 1575dd24f6da8f5db31756a07b3baf6a8329001d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1601 zcmV-H2EO@;P)3l5#GF3@18Rhi8-_G{OgAPDWSSX#iY!RF2EeuP$AFBZM(L#?h1&}vOqO@$t% z6-H>QuA!o`0lMl&=xZ(fY^-U-RZ}(CbM~^bD(Ndru2kx!>M|{qSM)q-O>;ZyT079t z)`iCQE?7Ex(A?FFmaaZNXR2>T`Bf82O7!MSmkckbMqy#Ow75hKWw{wuO#)BcbiJD= zYwhlb&@;f3(zVb#fR2G7T<;&`&uH}~u-^*>1?ApB$mOL07Yd6}tTFNAv|38iId}s- z))92y80KfXt`|D_eFAacr)Nvc^D8w)C>` z>1oV3owzqQ$Ac14;z_%mub7gOLclV3eUZemiC)nW2)nhCqq$P ztz+Xnk>mb-EG#Z!?!g1T;{MTFu-Rw1IyY^1aQn{RgXR?HijkC*>v;I^6AW!MJW zw9~n}z-`1~wmBWoI>}a@2%WALGMS1X>_%ggwEoxi@`mJhR<1^HaM)%BVof-b%s#O? zzP}R$0Z2u>#4-c~+Cj0*$5?Ri}PHdzvrWj;?_zex2M~ zH3C_fSs*$(7KzEJkV=yf8XC^pEL0%1cJKaiEj=3>oAdsYO)Xzlo*4q+%vW&ezrh{F zS~UIS1C3;z{H6XaF;&*GgaPdQuMWQu{(-7lz72~GGv<5J;4mF3}Od^cng>J`XK4+XCNqs zBWlxoSoO|0u)$Z%La5IA7?_Z82&*v;(k&k%B_VzF0hU7)9a@jujfqIy{t?s{OV}Tm zRJ-WEI@}QZH@=Ic!@tm<7W>w%(SafW|7-jSM=!S;*hl9L00000NkvXXu0mjfZ{hZ; diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp deleted file mode 100644 index 92f57d6d3..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include - -#ifdef Q_WS_WIN -#define CALLGRIND_START_INSTRUMENTATION {} -#define CALLGRIND_STOP_INSTRUMENTATION {} -#else -#include "valgrind/callgrind.h" -#endif - -#ifdef Q_WS_X11 -extern void qt_x11_wait_for_window_manager(QWidget *); -#endif - -class View : public QGraphicsView -{ - Q_OBJECT -public: - View(QGraphicsScene *scene, QGraphicsItem *item) - : QGraphicsView(scene), _item(item) - { - } - -protected: - void paintEvent(QPaintEvent *event) - { - static int n = 0; - if (n) - CALLGRIND_START_INSTRUMENTATION - QGraphicsView::paintEvent(event); - _item->moveBy(1, 1); - if (n) - CALLGRIND_STOP_INSTRUMENTATION - if (++n == 200) - qApp->quit(); - } - -private: - QGraphicsItem *_item; -}; - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - if (argc < 2) { - qDebug("usage: ./%s ", argv[0]); - return 1; - } - - QGraphicsScene scene(-150, -150, 300, 300); - scene.setItemIndexMethod(QGraphicsScene::NoIndex); - - QGraphicsRectItem *item = scene.addRect(-50, -50, 100, 100, QPen(Qt::NoPen), QBrush(Qt::blue)); - item->setFlag(QGraphicsItem::ItemIsMovable); - - for (int i = 0; i < atoi(argv[1]); ++i) { - QGraphicsRectItem *child = scene.addRect(-5, -5, 10, 10, QPen(Qt::NoPen), QBrush(Qt::blue)); - child->setPos(-50 + qrand() % 100, -50 + qrand() % 100); - child->setParentItem(item); - } - - View view(&scene, item); - view.resize(300, 300); - view.show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&view); -#endif - - return app.exec(); -} - -#include "moc_main.cpp" diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro deleted file mode 100644 index 28dcadcbf..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro +++ /dev/null @@ -1 +0,0 @@ -SOURCES += main.cpp diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp deleted file mode 100644 index af54ea747..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the test suite of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include - -#ifdef Q_WS_WIN -#define CALLGRIND_START_INSTRUMENTATION {} -#define CALLGRIND_STOP_INSTRUMENTATION {} -#else -#include "valgrind/callgrind.h" -#endif - -class ItemMover : public QObject -{ - Q_OBJECT -public: - ItemMover(QGraphicsItem *item) - : _item(item) - { - startTimer(0); - } - -protected: - void timerEvent(QTimerEvent *event) - { - _item->moveBy(-1, 0); - } - -private: - QGraphicsItem *_item; -}; - -class ClipItem : public QGraphicsRectItem -{ -public: - ClipItem(qreal x, qreal y, qreal w, qreal h, const QPen &pen, const QBrush &brush) - : QGraphicsRectItem(x, y, w, h) - { - setPen(pen); - setBrush(brush); - } - - QPainterPath shape() const - { - QPainterPath path; - path.addRect(rect()); - return path; - } -}; - -class CountView : public QGraphicsView -{ -protected: - void paintEvent(QPaintEvent *event) - { - static int n = 0; - if (n) - CALLGRIND_START_INSTRUMENTATION - QGraphicsView::paintEvent(event); - if (n) - CALLGRIND_STOP_INSTRUMENTATION - if (++n == 500) - qApp->quit(); - } -}; - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QGraphicsScene scene; - scene.setItemIndexMethod(QGraphicsScene::NoIndex); - - ClipItem *clipItem = new ClipItem(0, 0, 100, 100, QPen(), QBrush(Qt::blue)); - clipItem->setFlag(QGraphicsItem::ItemClipsChildrenToShape); - clipItem->setData(0, "clipItem"); - scene.addItem(clipItem); - - QGraphicsRectItem *scrollItem = scene.addRect(0, 0, 10, 10, QPen(Qt::NoPen), QBrush(Qt::NoBrush)); - scrollItem->setParentItem(clipItem); - scrollItem->setFlag(QGraphicsItem::ItemIsMovable); - scrollItem->setData(0, "scrollItem"); - - for (int y = 0; y < 25; ++y) { - for (int x = 0; x < 25; ++x) { - ClipItem *rect = new ClipItem(0, 0, 90, 20, QPen(Qt::NoPen), QBrush(Qt::green)); - rect->setParentItem(scrollItem); - rect->setPos(x * 95, y * 25); - rect->setData(0, qPrintable(QString("rect %1 %2").arg(x).arg(y))); - rect->setFlag(QGraphicsItem::ItemClipsChildrenToShape); - - QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(-5, -5, 10, 10); - ellipse->setPen(QPen(Qt::NoPen)); - ellipse->setBrush(QBrush(Qt::yellow)); - ellipse->setParentItem(rect); - ellipse->setData(0, qPrintable(QString("ellipse %1 %2").arg(x).arg(y))); - } - } - - scrollItem->setRect(scrollItem->childrenBoundingRect()); - -#if 0 - ItemMover mover(scrollItem); -#endif - - CountView view; - view.setScene(&scene); - view.setSceneRect(-25, -25, 150, 150); - view.resize(300, 300); - view.show(); - - return app.exec(); -} - -#include "moc_main.cpp" diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro deleted file mode 100644 index 28dcadcbf..000000000 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro +++ /dev/null @@ -1 +0,0 @@ -SOURCES += main.cpp -- 2.11.0