e92c1976a6
Change-Id: Ifa6a99db27ce51529489bf077a839a3107b524d2 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
83 lines
3.0 KiB
Plaintext
83 lines
3.0 KiB
Plaintext
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
** Contact: http://www.qt-project.org/
|
|
**
|
|
** This file is part of the documentation of the Qt Toolkit.
|
|
**
|
|
** $QT_BEGIN_LICENSE:FDL$
|
|
** GNU Free Documentation License
|
|
** Alternatively, this file may be used under the terms of the GNU Free
|
|
** Documentation License version 1.3 as published by the Free Software
|
|
** Foundation and appearing in the file included in the packaging of
|
|
** this file.
|
|
**
|
|
** Other Usage
|
|
** Alternatively, this file may be used in accordance with the terms
|
|
** and conditions contained in a signed written agreement between you
|
|
** and Nokia.
|
|
**
|
|
**
|
|
**
|
|
**
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
/*!
|
|
\example itemviews/chart
|
|
\title Chart Example
|
|
|
|
The Chart example shows how to create a custom view for the model/view framework.
|
|
|
|
\image chart-example.png
|
|
|
|
In this example, the items in a table model are represented as slices in a pie chart,
|
|
relying on the flexibility of the model/view architecture to handle custom editing
|
|
and selection features.
|
|
|
|
\b{Note that you only need to create a new view class if your data requires a
|
|
specialized representation.} You should first consider using a standard QListView,
|
|
QTableView, or QTreeView with a custom QItemDelegate subclass if you need to
|
|
represent data in a special way.
|
|
|
|
\omit
|
|
\section1 PieView Class Definition
|
|
|
|
The \c PieView class is a subclass of QAbstractItemView. The base class provides
|
|
much of the functionality required by view classes, so we only need to provide
|
|
implementations for three public functions: visualRect(), scrollTo(), and
|
|
indexAt(). However, the view needs to maintain strict control over its look and
|
|
feel, so we also provide implementations for a number of other functions:
|
|
|
|
\snippet itemviews/chart/pieview.h 0
|
|
|
|
|
|
|
|
\section1 PieView Class Implementation
|
|
|
|
The paint event renders the data from the standard item model as a pie chart.
|
|
We interpret the data in the following way:
|
|
|
|
\list
|
|
\li Column 0 contains data in two different roles:
|
|
The \l{Qt::ItemDataRole}{DisplayRole} contains a label, and the
|
|
\l{Qt::ItemDataRole}{DecorationRole} contains the color of the pie slice.
|
|
\li Column 1 contains a quantity which we will convert to the angular extent of
|
|
the slice.
|
|
\endlist
|
|
|
|
The figure is always drawn with the chart on the left and the key on
|
|
the right. This means that we must try and obtain an area that is wider
|
|
than it is tall. We do this by imposing a particular aspect ratio on
|
|
the chart and applying it to the available vertical space. This ensures
|
|
that we always obtain the maximum horizontal space for the aspect ratio
|
|
used.
|
|
We also apply fixed size margin around the figure.
|
|
|
|
We use logical coordinates to draw the chart and key, and position them
|
|
on the view using viewports.
|
|
\endomit
|
|
*/
|