• Topi Reinio's avatar
    Doc: Updated content for Drill Down example · e724fd47
    Topi Reinio authored
    
    QtWidgets/Drill Down example uses images and information about Nokia's
    old office locations as content. This change updates the example to
    use concepts related to Qt instead.
    
    In addition,
        - Documentation, screenshot updated accordingly
        - Corrected aspect ratio when scaling image items in the scene
        - Added a gray background with a slight gradient
        - Removed Symbian-specific code remnant
    
    Task-number: QTBUG-31075
    Change-Id: Id8abfbf7f4033f74172477570f8f28390854101c
    Reviewed-by: default avatarFriedemann Kleint <Friedemann.Kleint@digia.com>
    Reviewed-by: default avatarJerome Pasion <jerome.pasion@digia.com>
    e724fd47
imageitem.cpp 3.56 KiB
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
**     of its contributors may be used to endorse or promote products derived
**     from this software without specific prior written permission.
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
****************************************************************************/
#include "imageitem.h"
//! [0]
ImageItem::ImageItem(int id, const QPixmap &pixmap, QGraphicsItem *parent)
    : QGraphicsPixmapItem(pixmap, parent)
    recordId = id;
    setAcceptHoverEvents(true);
    timeLine.setDuration(150);
    timeLine.setFrameRange(0, 150);
    connect(&timeLine, SIGNAL(frameChanged(int)), this, SLOT(setFrame(int)));
    connect(&timeLine, SIGNAL(finished()), this, SLOT(updateItemPosition()));
    adjust();
//! [0]
//! [1]
void ImageItem::hoverEnterEvent(QGraphicsSceneHoverEvent * /*event*/)
    timeLine.setDirection(QTimeLine::Forward);
    if (z != 1.0) {
        z = 1.0;
        updateItemPosition();
    if (timeLine.state() == QTimeLine::NotRunning)
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
timeLine.start(); } //! [1] //! [2] void ImageItem::hoverLeaveEvent(QGraphicsSceneHoverEvent * /*event*/) { timeLine.setDirection(QTimeLine::Backward); if (z != 0.0) z = 0.0; if (timeLine.state() == QTimeLine::NotRunning) timeLine.start(); } //! [2] //! [3] void ImageItem::setFrame(int frame) { adjust(); QPointF center = boundingRect().center(); setTransform(QTransform::fromTranslate(center.x(), center.y()), true); setTransform(QTransform::fromScale(1 + frame / 330.0, 1 + frame / 330.0), true); setTransform(QTransform::fromTranslate(-center.x(), -center.y()), true); } //! [3] //! [4] void ImageItem::adjust() { QMatrix matrix; matrix.scale(120/ boundingRect().width(), 120/ boundingRect().height()); setMatrix(matrix); } //! [4] //! [5] int ImageItem::id() { return recordId; } //! [5] //! [6] void ImageItem::updateItemPosition() { setZValue(z); } //! [6]