diff options
author | Gabriel de Dietrich <gabriel.dietrich-de@nokia.com> | 2012-08-17 13:23:19 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-20 12:20:55 +0200 |
commit | 806dda08d685bc5f9ed71dfe8b61f21848d48066 (patch) | |
tree | a63533a1c4a335ae17adc105abb0ae4e62e2f26e /examples/widgets/graphicsview/weatheranchorlayout | |
parent | 9f942014e31842b512c3198de035d041c59f54a9 (diff) |
Moving .qdoc files under examples/widgets/doc
Updated those .qdoc files to refer to the new relative examples
emplacement. Images and snippets to be moved later.
Also grouped all widgets related examples under widgets.
Change-Id: Ib29696e2d8948524537f53e8dda88f9ee26a597f
Reviewed-by: J-P Nurmi <j-p.nurmi@nokia.com>
Diffstat (limited to 'examples/widgets/graphicsview/weatheranchorlayout')
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/5days.jpg | bin | 0 -> 5748 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/details.jpg | bin | 0 -> 5323 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/place.jpg | bin | 0 -> 62438 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/tabbar.jpg | bin | 0 -> 849 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/title.jpg | bin | 0 -> 3472 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/images/weather-few-clouds.png | bin | 0 -> 18976 bytes | |||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/main.cpp | 274 | ||||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.desktop | 11 | ||||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.pro | 12 | ||||
-rw-r--r-- | examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc | 10 |
10 files changed, 307 insertions, 0 deletions
diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/5days.jpg b/examples/widgets/graphicsview/weatheranchorlayout/images/5days.jpg Binary files differnew file mode 100644 index 0000000000..fd92ba8ba7 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/5days.jpg diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/details.jpg b/examples/widgets/graphicsview/weatheranchorlayout/images/details.jpg Binary files differnew file mode 100644 index 0000000000..fde0448c69 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/details.jpg diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/place.jpg b/examples/widgets/graphicsview/weatheranchorlayout/images/place.jpg Binary files differnew file mode 100644 index 0000000000..03e5344330 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/place.jpg diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/tabbar.jpg b/examples/widgets/graphicsview/weatheranchorlayout/images/tabbar.jpg Binary files differnew file mode 100644 index 0000000000..7777662901 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/tabbar.jpg diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/title.jpg b/examples/widgets/graphicsview/weatheranchorlayout/images/title.jpg Binary files differnew file mode 100644 index 0000000000..fa84c8156c --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/title.jpg diff --git a/examples/widgets/graphicsview/weatheranchorlayout/images/weather-few-clouds.png b/examples/widgets/graphicsview/weatheranchorlayout/images/weather-few-clouds.png Binary files differnew file mode 100644 index 0000000000..eea6ce6529 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/images/weather-few-clouds.png diff --git a/examples/widgets/graphicsview/weatheranchorlayout/main.cpp b/examples/widgets/graphicsview/weatheranchorlayout/main.cpp new file mode 100644 index 0000000000..64605bebc0 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/main.cpp @@ -0,0 +1,274 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 Nokia Corporation 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 <QLabel> +#include <QPainter> +#include <QPushButton> +#include <QApplication> + +#include <QGraphicsView> +#include <QGraphicsScene> +#include <QGraphicsWidget> +#include <QGraphicsProxyWidget> +#include <QGraphicsAnchorLayout> +#include <QGraphicsSceneResizeEvent> + + +class GraphicsView : public QGraphicsView +{ +public: + GraphicsView(QGraphicsScene *scene, QGraphicsWidget *widget) : QGraphicsView(scene), w(widget) + { + } + + virtual void resizeEvent(QResizeEvent *event) + { + w->setGeometry(0, 0, event->size().width(), event->size().height()); + } + + QGraphicsWidget *w; +}; + +class PixmapWidget : public QGraphicsLayoutItem +{ + +public: + PixmapWidget(const QPixmap &pix) : QGraphicsLayoutItem() + { + original = new QGraphicsPixmapItem(pix); + setGraphicsItem(original); + original->show(); + r = QRectF(QPointF(0, 0), pix.size()); + } + + ~PixmapWidget() + { + setGraphicsItem(0); + delete original; + } + + void setZValue(qreal z) + { + original->setZValue(z); + } + + void setGeometry (const QRectF &rect) + { + original->setTransform(QTransform::fromScale(rect.width() / r.width(), rect.height() / r.height()), true); + original->setPos(rect.x(), rect.y()); + r = rect; + } + +protected: + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const + { + Q_UNUSED(constraint); + QSizeF sh; + switch (which) { + case Qt::MinimumSize: + sh = QSizeF(0, 0); + break; + case Qt::PreferredSize: + sh = QSizeF(50, 50); + break; + case Qt::MaximumSize: + sh = QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + break; + default: + break; + } + return sh; + } + +private: + QGraphicsPixmapItem *original; + QRectF r; +}; + + +class PlaceWidget : public QGraphicsWidget +{ + Q_OBJECT + +public: + PlaceWidget(const QPixmap &pix) : QGraphicsWidget(), original(pix), scaled(pix) + { + } + + void paint(QPainter *painter, const QStyleOptionGraphicsItem*, QWidget*) + { + QPointF reflection = QPointF(); + reflection.setY(scaled.height() + 2); + + painter->drawPixmap(QPointF(), scaled); + + QPixmap tmp(scaled.size()); + tmp.fill(Qt::transparent); + QPainter p(&tmp); + + // create gradient + QPoint p1(scaled.width() / 2, 0); + QPoint p2(scaled.width() / 2, scaled.height()); + QLinearGradient linearGrad(p1, p2); + linearGrad.setColorAt(0, QColor(0, 0, 0, 0)); + linearGrad.setColorAt(0.65, QColor(0, 0, 0, 127)); + linearGrad.setColorAt(1, QColor(0, 0, 0, 255)); + + // apply 'mask' + p.setBrush(linearGrad); + p.fillRect(0, 0, tmp.width(), tmp.height(), QBrush(linearGrad)); + p.fillRect(0, 0, tmp.width(), tmp.height(), QBrush(linearGrad)); + + // paint the image flipped + p.setCompositionMode(QPainter::CompositionMode_DestinationOver); + p.drawPixmap(0, 0, QPixmap::fromImage(scaled.toImage().mirrored(false, true))); + p.end(); + + painter->drawPixmap(reflection, tmp); + } + + void resizeEvent(QGraphicsSceneResizeEvent *event) + { + QSize newSize = event->newSize().toSize(); + newSize.setHeight(newSize.height() / 2); + scaled = original.scaled(newSize); + } + + QRectF boundingRect() const + { + QSize size(scaled.width(), scaled.height() * 2 + 2); + return QRectF(QPointF(0, 0), size); + } + +private: + QPixmap original; + QPixmap scaled; +}; + + +int main(int argc, char **argv) +{ + Q_INIT_RESOURCE(weatheranchorlayout); + + QApplication app(argc, argv); + + QGraphicsScene scene; + scene.setSceneRect(0, 0, 800, 480); + + // pixmaps widgets + PixmapWidget *title = new PixmapWidget(QPixmap(":/images/title.jpg")); + PlaceWidget *place = new PlaceWidget(QPixmap(":/images/place.jpg")); + PixmapWidget *details = new PixmapWidget(QPixmap(":/images/5days.jpg")); + PixmapWidget *sunnyWeather = new PixmapWidget(QPixmap(":/images/weather-few-clouds.png")); + PixmapWidget *tabbar = new PixmapWidget(QPixmap(":/images/tabbar.jpg")); + + + // setup sizes + title->setPreferredSize(QSizeF(348, 45)); + title->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + place->setPreferredSize(QSizeF(96, 72)); + place->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + details->setMinimumSize(QSizeF(200, 112)); + details->setPreferredSize(QSizeF(200, 112)); + details->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + tabbar->setPreferredSize(QSizeF(70, 24)); + tabbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + sunnyWeather->setPreferredSize(QSizeF(128, 97)); + sunnyWeather->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + sunnyWeather->setZValue(9999); + + // start anchor layout + QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; + l->setSpacing(0); + + // setup the main widget + QGraphicsWidget *w = new QGraphicsWidget(0, Qt::Window); + QPalette p; + p.setColor(QPalette::Window, Qt::black); + w->setPalette(p); + w->setPos(20, 20); + w->setLayout(l); + + // vertical anchors + QGraphicsAnchor *anchor = l->addAnchor(title, Qt::AnchorTop, l, Qt::AnchorTop); + anchor = l->addAnchor(place, Qt::AnchorTop, title, Qt::AnchorBottom); + anchor->setSpacing(12); + anchor = l->addAnchor(place, Qt::AnchorBottom, l, Qt::AnchorBottom); + anchor->setSpacing(12); + + anchor = l->addAnchor(sunnyWeather, Qt::AnchorTop, title, Qt::AnchorTop); + anchor = l->addAnchor(sunnyWeather, Qt::AnchorBottom, l, Qt::AnchorVerticalCenter); + + anchor = l->addAnchor(tabbar, Qt::AnchorTop, title, Qt::AnchorBottom); + anchor->setSpacing(5); + anchor = l->addAnchor(details, Qt::AnchorTop, tabbar, Qt::AnchorBottom); + anchor->setSpacing(2); + anchor = l->addAnchor(details, Qt::AnchorBottom, l, Qt::AnchorBottom); + anchor->setSpacing(12); + + // horizontal anchors + anchor = l->addAnchor(l, Qt::AnchorLeft, title, Qt::AnchorLeft); + anchor = l->addAnchor(title, Qt::AnchorRight, l, Qt::AnchorRight); + + anchor = l->addAnchor(place, Qt::AnchorLeft, l, Qt::AnchorLeft); + anchor->setSpacing(15); + anchor = l->addAnchor(place, Qt::AnchorRight, details, Qt::AnchorLeft); + anchor->setSpacing(35); + + anchor = l->addAnchor(sunnyWeather, Qt::AnchorLeft, place, Qt::AnchorHorizontalCenter); + anchor = l->addAnchor(sunnyWeather, Qt::AnchorRight, l, Qt::AnchorHorizontalCenter); + + anchor = l->addAnchor(tabbar, Qt::AnchorHorizontalCenter, details, Qt::AnchorHorizontalCenter); + anchor = l->addAnchor(details, Qt::AnchorRight, l, Qt::AnchorRight); + + // QGV setup + scene.addItem(w); + scene.setBackgroundBrush(Qt::white); + QGraphicsView *view = new QGraphicsView(&scene); + view->show(); + + return app.exec(); +} + +#include "main.moc" diff --git a/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.desktop b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.desktop new file mode 100644 index 0000000000..0c6ab89a68 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=Weather Anchor Layout +Exec=/opt/usr/bin/weatheranchorlayout +Icon=weatheranchorlayout +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.pro b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.pro new file mode 100644 index 0000000000..b6eb292a12 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.pro @@ -0,0 +1,12 @@ +QT += widgets + +SOURCES += main.cpp +RESOURCES += weatheranchorlayout.qrc + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/graphicsview/weatheranchorlayout +sources.files = $$SOURCES $$HEADERS $$RESOURCES weatheranchorlayout.pro images +sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/graphicsview/weatheranchorlayout +INSTALLS += target sources + +simulator: warning(This example might not fully work on Simulator platform) diff --git a/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc new file mode 100644 index 0000000000..e39f8c0423 --- /dev/null +++ b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc @@ -0,0 +1,10 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>images/5days.jpg</file> + <file>images/title.jpg</file> + <file>images/place.jpg</file> + <file>images/tabbar.jpg</file> + <file>images/details.jpg</file> + <file>images/weather-few-clouds.png</file> +</qresource> +</RCC> |