Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# QRegion Class Reference

The QRegion class specifies a clip region for a painter. More...

    #include <QRegion>

- List of all members, including inherited members
- Compatibility members

### Public Types

- enum RegionType { Rectangle, Ellipse }

### Public Functions

- QRegion ()
- QRegion ( int x, int y, int w, int h, RegionType t = Rectangle )
- QRegion ( const QRect & r, RegionType t = Rectangle )
- QRegion ( const QPointArray & a, Qt::FillRule rule = Qt::OddEvenFill )
- QRegion ( const QRegion & r )
- QRegion ( const QBitmap & bm )
- ~QRegion ()
- QRect boundingRect () const
- bool contains ( const QPoint & p ) const
- bool contains ( const QRect & r ) const
- QRegion eor ( const QRegion & r ) const
- HRGN handle () const
- RgnHandle handle () const
- QRegion intersect ( const QRegion & r ) const
- bool isEmpty () const
- QVector<QRect> rects () const
- QRegion subtract ( const QRegion & r ) const
- void translate ( int dx, int dy )
- void translate ( const QPoint & point )
- QRegion unite ( const QRegion & r ) const
- bool operator!= ( const QRegion & other ) const
- const QRegion operator& ( const QRegion & r ) const
- QRegion & operator&= ( const QRegion & r )
- const QRegion operator+ ( const QRegion & r ) const
- QRegion & operator+= ( const QRegion & r )
- const QRegion operator- ( const QRegion & r ) const
- QRegion & operator-= ( const QRegion & r )
- QRegion & operator= ( const QRegion & r )
- bool operator== ( const QRegion & r ) const
- const QRegion operator^ ( const QRegion & r ) const
- QRegion & operator^= ( const QRegion & r )
- const QRegion operator| ( const QRegion & r ) const
- QRegion & operator|= ( const QRegion & r )

### Related Non-Members

- QDataStream & operator<< ( QDataStream & s, const QRegion & r )
- QDataStream & operator>> ( QDataStream & s, QRegion & r )

## Detailed Description

The QRegion class specifies a clip region for a painter.

QRegion is used with QPainter::setClipRegion() to limit the paint area to what needs to be painted. There is also a QWidget::repaint() function that takes a QRegion parameter. QRegion is the best tool for reducing flicker.

A region can be created from a rectangle, an ellipse, a polygon or a bitmap. Complex regions may be created by combining simple regions using unite(), intersect(), subtract(), or eor() (exclusive or). You can move a region using translate().

You can test whether a region isNull(), isEmpty() or if it contains() a QPoint or QRect. The bounding rectangle can be found with boundingRect().

The function rects() gives a decomposition of the region into rectangles.

Example of using complex regions:

        void MyWidget::paintEvent(QPaintEvent *)
        {
            QPainter p;                       // our painter
            QRegion r1(QRect(100,100,200,80), // r1 = elliptic region
                       QRegion::Ellipse);
            QRegion r2(QRect(100,120,90,30)); // r2 = rectangular region
            QRegion r3 = r1.intersect(r2);    // r3 = intersection
            p.begin(this);                    // start painting widget
            p.setClipRegion(r3);              // set clip region
            ...                               // paint clipped graphics
            p.end();                          // painting done
        }

QRegion is an implicitly shared class.

Warning: Due to window system limitations, the whole coordinate space for a region is limited to the points between -32767 and 32767 on Windows 95/98/ME.

See also QPainter::setClipRegion() and QPainter::setClipRect().

## Member Type Documentation

### enum QRegion::RegionType

Specifies the shape of the region to be created.

`QRegion::Rectangle` | the region covers the entire rectangle.
`QRegion::Ellipse` | the region is an ellipse inside the rectangle.

## Member Function Documentation

### QRegion::QRegion ()

Creates a new empty region.

See also isEmpty().

### QRegion::QRegion ( int x, int y, int w, int h, RegionType t = Rectangle )

Constructs a rectangular or elliptic region.

If t is `Rectangle`, the region is the filled rectangle (x, y, w, h). If t is `Ellipse`, the region is the filled ellipse with center at (x + w / 2, y + h / 2) and size (w ,h).

### QRegion::QRegion ( const QRect & r, RegionType t = Rectangle )

Creates a new region. If t is `Rectangle` the new region is a rectangle occupying the area of the rectangle r; if t is `Ellipse` the new region is the largest ellipse that fills the area occupied by the rectangle r.

### QRegion::QRegion ( const QPointArray & a, Qt::FillRule rule = Qt::OddEvenFill )

Constructs a polygon region from the point array a with the fill rule specified by fillRule.

If fillRule is Qt::WindingFill, the polygon region is defined using the winding algorithm; if it is Qt::OddEvenFill, the odd-even fill algorithm is used.

Warning: This constructor can be used to create complex regions that will slow down painting when used.

### QRegion::QRegion ( const QRegion & r )

Creates a new region that is a copy of the region r.

This is fast because QRegion is implicitly shared.

### QRegion::QRegion ( const QBitmap & bm )

Creates a new region based on the bitmap bm.

### QRegion::~QRegion ()

Destroys this region.

### QRect QRegion::boundingRect () const

Returns the smallest bounding rectangle that contains this region.

### bool QRegion::contains ( const QPoint & p ) const

Returns true if this region contains the point p; otherwise returns false.

### bool QRegion::contains ( const QRect & r ) const

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Returns true if this region wholly contains the region r; otherwise returns false.

### QRegion QRegion::eor ( const QRegion & r ) const

Returns a region that is the result of exclusive-OR-ing this region with the region r.

### HRGN QRegion::handle () const

Returns the region's handle.

### RgnHandle QRegion::handle () const

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

### QRegion QRegion::intersect ( const QRegion & r ) const

Returns a region that is the result of intersecting this region with the region r.

### bool QRegion::isEmpty () const

Returns true if this region is empty; otherwise returns false.

### QVector<QRect> QRegion::rects () const

Returns a (possibly empty) list of the rectangles that constitute this region.

### QRegion QRegion::subtract ( const QRegion & r ) const

Returns a region that is the result of subtracting the region r from this region.

### void QRegion::translate ( int dx, int dy )

Translates the region by dx on the x axis and by dy on the y axis.

### void QRegion::translate ( const QPoint & point )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Translates to the given point.

### QRegion QRegion::unite ( const QRegion & r ) const

Returns a region that is the result of performing a union of this region with the region r.

### bool QRegion::operator!= ( const QRegion & other ) const

Returns true if this region is different from the other region; otherwise returns false.

### const QRegion QRegion::operator& ( const QRegion & r ) const

Applies the intersect() function to this region and r. `r1&r2` is equivalent to `r1.intersect(r2)`

See also intersect().

### QRegion & QRegion::operator&= ( const QRegion & r )

Applies the intersect() function to this region and r and assigns the result to this region. `r1&=r2` is equivalent to `r1=r1.intersect(r2)`

See also intersect().

### const QRegion QRegion::operator+ ( const QRegion & r ) const

Applies the unite() function to this region and r. `r1+r2` is equivalent to `r1.unite(r2)`

See also unite() and operator|().

### QRegion & QRegion::operator+= ( const QRegion & r )

Applies the unite() function to this region and r and assigns the result to this region. `r1+=r2` is equivalent to `r1=r1.unite(r2)`

See also intersect().

### const QRegion QRegion::operator- ( const QRegion & r ) const

Applies the subtract() function to this region and r. `r1-r2` is equivalent to `r1.subtract(r2)`

See also subtract().

### QRegion & QRegion::operator-= ( const QRegion & r )

Applies the subtract() function to this region and r and assigns the result to this region. `r1-=r2` is equivalent to `r1=r1.subtract(r2)`

See also subtract().

### QRegion & QRegion::operator= ( const QRegion & r )

Assigns region r to this region and returns a reference to this region.

### bool QRegion::operator== ( const QRegion & r ) const

Returns true if this region is the same as the region r; otherwise returns false.

### const QRegion QRegion::operator^ ( const QRegion & r ) const

Applies the eor() function to this region and r. `r1^r2` is equivalent to `r1.eor(r2)`

See also eor().

### QRegion & QRegion::operator^= ( const QRegion & r )

Applies the eor() function to this region and r and assigns the result to this region. `r1^=r2` is equivalent to `r1=r1.eor(r2)`

See also eor().

### const QRegion QRegion::operator| ( const QRegion & r ) const

Applies the unite() function to this region and r. `r1|r2` is equivalent to `r1.unite(r2)`

See also unite() and operator+().

### QRegion & QRegion::operator|= ( const QRegion & r )

Applies the unite() function to this region and r and assigns the result to this region. `r1|=r2` is equivalent to `r1=r1.unite(r2)`

See also unite().

## Related Non-Members

### QDataStream & operator<< ( QDataStream & s, const QRegion & r )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Writes the region r to the stream s and returns a reference to the stream.

See also Format of the QDataStream operators.

### QDataStream & operator>> ( QDataStream & s, QRegion & r )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Reads a region from the stream s into r and returns a reference to the stream.

See also Format of the QDataStream operators.