Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
QCanvasView Class Reference
[canvas module]
The QCanvasView class provides an on-screen view of a QCanvas. More...
#include <qcanvas.h>
Inherits QScrollView.
Public Members
- QCanvasView ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
- QCanvasView ( QCanvas * canvas, QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
- ~QCanvasView ()
- QCanvas * canvas () const
- void setCanvas ( QCanvas * canvas )
- const QWMatrix & worldMatrix () const
- const QWMatrix & inverseWorldMatrix () const
- bool setWorldMatrix ( const QWMatrix & wm )
Protected Members
- virtual void drawContents ( QPainter * p, int cx, int cy, int cw, int ch )
Detailed Description
The QCanvasView class provides an on-screen view of a QCanvas.A QCanvasView is widget which provides a view of a QCanvas.
If you want users to be able to interact with a canvas view, subclass QCanvasView. You might then reimplement QScrollView::contentsMousePressEvent() for example:
void MyCanvasView::contentsMousePressEvent( QMouseEvent* e ) { QCanvasItemList l = canvas()->collisions(e->pos()); for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { if ( (*it)->rtti() == QCanvasRectangle::RTTI ) qDebug("A QCanvasRectangle lies somewhere at this point"); } }
Set the canvas that the view shows with setCanvas() and retrieve the canvas which the view is showing with canvas().
A transformation matrix can be used to transform the view of the canvas in various ways, for example, zooming in or out or rotating. For example:
QWMatrix wm; wm.scale( 2, 2 ); // Zooms in by 2 times wm.rotate( 90 ); // Rotates 90 degrees counter clockwise // around the origin. wm.translate( 0, -canvas->height() ); // moves the canvas down so what was visible // before is still visible. myCanvasView->setWorldMatrix( wm );
Use setWorldMatrix() to set the canvas view's world matrix: you must ensure that the world matrix is invertible. The current world matrix is retrievable with worldMatrix(), and its inversion is retrievable with inverseWorldMatrix().
Example:
The following code finds the part of the canvas that is visible in this view, i.e. the bounding rectangle of the view in canvas coordinates.
QRect rc = QRect( myCanvasView->contentsX(), myCanvasView->contentsY(), myCanvasView->visibleWidth(), myCanvasView->visibleHeight() ); QRect canvasRect = myCanvasView->inverseWorldMatrix().mapRect(rc);
See also QWMatrix, QPainter::setWorldMatrix(), Graphics Classes and Image Processing Classes.
Member Function Documentation
QCanvasView::QCanvasView ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
Constructs a QCanvasView with parent parent, and name name, using the widget flags f. The canvas view is not associated with a canvas, so you will need to call setCanvas() to display a canvas.QCanvasView::QCanvasView ( QCanvas * canvas, QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.Constructs a QCanvasView which views canvas canvas, with parent parent, and name name, using the widget flags f.
QCanvasView::~QCanvasView ()
Destroys the canvas view. The associated canvas is not deleted.QCanvas * QCanvasView::canvas () const
Returns a pointer to the canvas which the QCanvasView is currently showing.
void QCanvasView::drawContents ( QPainter * p, int cx, int cy, int cw, int ch ) [virtual protected]
Repaints part of the QCanvas that the canvas view is showing starting at cx by cy, with a width of cw and a height of ch using the painter p.Reimplemented from QScrollView.
const QWMatrix & QCanvasView::inverseWorldMatrix () const
Returns a reference to the inverse of the canvas view's current transformation matrix.
See also setWorldMatrix() and worldMatrix().
void QCanvasView::setCanvas ( QCanvas * canvas )
Sets the canvas that the QCanvasView is showing to the canvas canvas.bool QCanvasView::setWorldMatrix ( const QWMatrix & wm )
Sets the transformation matrix of the QCanvasView to wm. The matrix must be invertible (i.e. if you create a world matrix that zooms out by 2 times, then the inverse of this matrix is one that will zoom in by 2 times).When you use this, you should note that the performance of the QCanvasView will decrease considerably.
Returns FALSE if wm is not invertable; otherwise returns TRUE.
See also worldMatrix(), inverseWorldMatrix() and QWMatrix::isInvertible().
Example: canvas/canvas.cpp.
const QWMatrix & QCanvasView::worldMatrix () const
Returns a reference to the canvas view's current transformation matrix.
See also setWorldMatrix() and inverseWorldMatrix().
Example: canvas/canvas.cpp.
This file is part of the Qt toolkit. Copyright © 1995-2002 Trolltech. All Rights Reserved.
Copyright © 2002 Trolltech | Trademarks | Qt version 3.0.5
|