이 페이지에서

QRegion Class

QRegion 클래스는 페인터의 클립 영역을 지정합니다. 더 보기...

헤더: #include <QRegion>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

공개 유형

enum RegionType { Rectangle, Ellipse }
const_iterator
const_reverse_iterator

공개 함수

QRegion()
QRegion(const QBitmap &bm)
QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
QRegion(const QRegion &r)
QRegion(QRegion &&other)
QRegion::const_iterator begin() const
QRect boundingRect() const
QRegion::const_iterator cbegin() const
QRegion::const_iterator cend() const
bool contains(const QPoint &p) const
bool contains(const QRect &r) const
QRegion::const_reverse_iterator crbegin() const
QRegion::const_reverse_iterator crend() const
QRegion::const_iterator end() const
QRegion intersected(const QRect &rect) const
QRegion intersected(const QRegion &r) const
bool intersects(const QRect &rect) const
bool intersects(const QRegion &region) const
bool isEmpty() const
bool isNull() const
QRegion::const_reverse_iterator rbegin() const
int rectCount() const
(since 6.8) QSpan<const QRect> rects() const
QRegion::const_reverse_iterator rend() const
(since 6.8) void setRects(QSpan<const QRect> rects)
QRegion subtracted(const QRegion &r) const
void swap(QRegion &other)
(since 6.0) HRGN toHRGN() const
void translate(int dx, int dy)
void translate(const QPoint &point)
QRegion translated(int dx, int dy) const
QRegion translated(const QPoint &p) const
QRegion united(const QRect &rect) const
QRegion united(const QRegion &r) const
QRegion xored(const QRegion &r) const
operator QVariant() const
bool operator!=(const QRegion &other) const
QRegion operator&(const QRegion &r) const
QRegion operator&(const QRect &r) const
QRegion &operator&=(const QRegion &r)
QRegion &operator&=(const QRect &r)
QRegion operator+(const QRegion &r) const
QRegion operator+(const QRect &r) const
QRegion &operator+=(const QRect &rect)
QRegion &operator+=(const QRegion &r)
QRegion operator-(const QRegion &r) const
QRegion &operator-=(const QRegion &r)
QRegion &operator=(QRegion &&other)
QRegion &operator=(const QRegion &r)
bool operator==(const QRegion &r) const
QRegion operator^(const QRegion &r) const
QRegion &operator^=(const QRegion &r)
QRegion operator|(const QRegion &r) const
QRegion &operator|=(const QRegion &r)

정적 공용 멤버

(since 6.0) QRegion fromHRGN(HRGN hrgn)
QDataStream &operator<<(QDataStream &s, const QRegion &r)
QDataStream &operator>>(QDataStream &s, QRegion &r)

상세 설명

QRegion은 ` QPainter::setClipRegion()`와 함께 사용되어 페인트 영역을 실제로 그려야 할 부분으로 제한합니다. 또한 QRegion 매개변수를 받는 ` QWidget::repaint()` 함수도 있습니다. QRegion은 다시 그리기(repaint)로 인해 업데이트되어야 하는 화면 영역의 크기를 최소화하는 데 가장 적합한 도구입니다.

이 클래스는 렌더링을 위한 도형, 특히 윤곽선을 구성하는 데 적합하지 않습니다. QPainter 와 함께 사용할 경로 및 도형을 생성하려면 QPainterPath 를 사용하십시오.

QRegion은 암시적으로 공유되는 클래스입니다.

영역 생성 및 사용

영역은 사각형, 타원, 다각형 또는 비트맵을 기반으로 생성할 수 있습니다. united(), intersected(), subtracted() 또는 xored()(배타적 합)을 사용하여 간단한 영역을 결합함으로써 복잡한 영역을 생성할 수 있습니다. translate()을 사용하여 영역을 이동할 수 있습니다.

특정 영역이 isEmpty()에 해당하는지, 또는 contains()을 통해 QPoint 이나 QRect 에 해당하는지 확인할 수 있습니다. 경계 사각형은 boundingRect()을 사용하여 구할 수 있습니다.

해당 영역을 반복 처리하면( begin(), end() 또는 범위 기반 for 루프를 사용하여), 영역이 직사각형들로 분해됩니다.

복잡한 영역 사용 예시:

void MyWidget::paintEvent(QPaintEvent *)
{
    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.intersected(r2);        // r3: intersection

    QPainter painter(this);
    painter.setClipRegion(r3);
    // ...                                  // paint clipped graphics
}

QPainter::setClipRegion(), QPainter::setClipRect() 및 QPainterPath도 참조하십시오 .

멤버 유형 문서

enum QRegion::RegionType

생성할 영역의 모양을 지정합니다.

상수값설명
QRegion::Rectangle0영역이 직사각형 전체를 덮습니다.
QRegion::Ellipse1영역은 직사각형 내부의 타원입니다.

QRegion::const_iterator

해당 영역을 구성하는 겹치지 않는 직사각형들을 순회하는 이터레이터입니다.

모든 직사각형의 합집합은 원래 영역과 같습니다.

QRegion 변경 가능한 이터레이터를 제공하지 않습니다.

begin() 및 end()도 참조하십시오 .

QRegion::const_reverse_iterator

해당 영역을 구성하는, 서로 겹치지 않는 직사각형들을 순회하는 역 이터레이터입니다.

모든 직사각형의 합집합은 원래 영역과 동일합니다.

QRegion 변경 가능한 이터레이터를 제공하지 않습니다.

rbegin() 및 rend()도 참조하십시오 .

멤버 함수 문서

QRegion::QRegion()

빈 영역을 생성합니다.

isEmpty()도 참조하십시오 .

QRegion::QRegion(const QBitmap &bm)

비트맵 bm 을 기반으로 영역을 생성합니다.

결과 영역은 비트맵 bm 내의 픽셀 중 Qt::color1 인 픽셀들로 구성되며, 마치 각 픽셀이 1×1 직사각형인 것처럼 처리됩니다.

이 생성자는 사용 시 렌더링 속도를 저하시킬 수 있는 복잡한 영역을 생성할 수 있습니다. 마스크된 픽스맵을 그리는 작업은 QPixmap::setMask()을 사용하면 훨씬 더 빠르게 수행할 수 있다는 점에 유의하십시오.

QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)

점 배열 ` a `을 사용하여 ` fillRule`로 지정된 채우기 규칙에 따라 다각형 영역을 생성합니다.

fillRule 가 Qt::WindingFill 인 경우, 다각형 영역은 와인딩 알고리즘을 사용하여 정의되며, Qt::OddEvenFill 인 경우 홀수-짝수 채우기 알고리즘이 사용됩니다.

경고: 이 생성자는 사용 시 렌더링 속도를 저하시키는 복잡한 영역을 생성하는 데 사용될 수 있습니다.

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

직사각형 또는 타원형 영역을 생성합니다.

t 가 Rectangle 일 경우, 영역은 채워진 직사각형(x, y, w, h)이 됩니다. t 가 Ellipse 일 경우, 영역은 중심이 (x + w / 2, y + h / 2)에 있고 크기가 (w,h)인 채워진 타원이 됩니다.

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

r 크기의 사각형을 기반으로, 영역 유형을 ‘ t ’로 설정하여 영역을 생성합니다.

사각형이 유효하지 않은 경우 null 영역이 생성됩니다.

이 함수는 오버로드된 함수입니다.

QRegion::RegionType도 참조하십시오 .

QRegion::QRegion(const QRegion &r)

r 와 동일한 새로운 영역을 생성합니다.

[noexcept] QRegion::QRegion(QRegion &&other)

other 영역을 기반으로 새로운 영역을 이동 생성합니다. 호출 후, other 는 null이 됩니다.

isNull()도 참조하십시오 .

[noexcept] QRegion::const_iterator QRegion::begin() const

해당 영역을 구성하는 겹치지 않는 직사각형들의 범위 시작 부분을 가리키는 ` const_iterator `를 반환합니다.

모든 사각형의 합집합은 원래 영역과 동일합니다.

rbegin(), cbegin(), end()도 참조하십시오 .

[noexcept] QRect QRegion::boundingRect() const

이 영역의 경계 사각형을 반환합니다. 빈 영역의 경우 QRect::isNull()인 사각형을 반환합니다.

[noexcept] QRegion::const_iterator QRegion::cbegin() const

begin()와 동일합니다.

[noexcept] QRegion::const_iterator QRegion::cend() const

end()와 동일합니다.

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

해당 영역에 점 p 이 포함되어 있으면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다.

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

영역이 사각형 r 과 겹치는 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

이 함수는 오버로드된 함수입니다.

[noexcept] QRegion::const_reverse_iterator QRegion::crbegin() const

rbegin()와 동일합니다.

[noexcept] QRegion::const_reverse_iterator QRegion::crend() const

rend()와 동일합니다.

[noexcept] QRegion::const_iterator QRegion::end() const

해당 영역을 구성하는 겹치지 않는 직사각형들의 끝을 한 칸 지나가는 위치를 가리키는 ` const_iterator `를 반환합니다.

모든 사각형의 합집합은 원래 영역과 동일합니다.

rend(), cend(), begin()도 참조하십시오 .

[static, since 6.0] QRegion QRegion::fromHRGN(HRGN hrgn)

주어진 ` hrgn`와 동등한 ` QRegion `를 반환합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

QRegion QRegion::intersected(const QRect &rect) const

이 영역과 주어진 rect 의 교집합인 영역을 반환합니다.

subtracted(), united(), xored()도 참조하십시오 .

QRegion QRegion::intersected(const QRegion &r) const

이 영역과 r 의 교집합인 영역을 반환합니다.

지역 교차점

그림은 두 타원형 영역의 교집합을 보여줍니다.

subtracted(), united(), xored()도 참조하십시오 .

bool QRegion::intersects(const QRect &rect) const

이 영역이 rect 와 겹치는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

bool QRegion::intersects(const QRegion &region) const

이 영역이 region 와 교차하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

bool QRegion::isEmpty() const

영역이 비어 있으면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다. 빈 영역이란 점을 하나도 포함하지 않는 영역을 말합니다.

예시:

QRegion r1(10, 10, 20, 20);
r1.isEmpty();               // false

QRegion r3;
r3.isEmpty();               // true

QRegion r2(40, 40, 20, 20);
r3 = r1.intersected(r2);    // r3: intersection of r1 and r2
r3.isEmpty();               // true

r3 = r1.united(r2);         // r3: union of r1 and r2
r3.isEmpty();               // false

bool QRegion::isNull() const

영역이 비어 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다. 빈 영역이란 점을 하나도 포함하지 않는 영역을 말합니다. 이 함수는 다음 함수와 동일합니다. isEmpty

isEmpty()도 참조하십시오 .

[noexcept] QRegion::const_reverse_iterator QRegion::rbegin() const

해당 영역을 구성하는 겹치지 않는 직사각형들의 범위 시작 부분을 가리키는 ` const_reverse_iterator ` 객체를 반환합니다.

모든 직사각형의 합집합은 원래 영역과 동일합니다.

begin(), crbegin(), rend()도 참조하십시오 .

[noexcept] int QRegion::rectCount() const

이 영역을 구성하는 직사각형의 개수를 반환합니다. ` end() - begin()`와 동일합니다.

[noexcept, since 6.8] QSpan<const QRect> QRegion::rects() const

해당 영역을 구성하는, 서로 겹치지 않는 직사각형들의 스팬을 반환합니다. 이 스팬은 해당 영역에 대해 변형을 일으키는(const가 아닌) 메서드가 다음에 호출될 때까지 유효합니다.

모든 사각형의 합집합은 원래 영역과 동일합니다.

참고: 이 함수는 Qt 5에도 존재했으나, 대신 QVector<QRect>를 반환했습니다.

이 함수는 Qt 6.8에서 도입되었습니다.

setRects()도 참조하십시오 .

[noexcept] QRegion::const_reverse_iterator QRegion::rend() const

해당 영역을 구성하는 중첩되지 않는 직사각형들의 범위 끝에서 한 칸 더 앞을 가리키는 ` const_reverse_iterator `를 반환합니다.

모든 사각형의 합집합은 원래 영역과 동일합니다.

end(), crend(), rbegin()도 참조하십시오 .

[since 6.8] void QRegion::setRects(QSpan<const QRect> rects)

rects 로 지정된 직사각형 배열을 사용하여 영역을 설정합니다. 직사각형들은 Y-X 순서로 최적으로 정렬되어야 하며 다음 제한 사항을 준수해야 합니다:

  • 직사각형들은 서로 겹쳐서는 안 됩니다.
  • 상단 좌표가 동일한 모든 직사각형은 높이가 같아야 합니다.
  • 두 개의 사각형이 수평으로 인접해서는 안 됩니다(이 경우, 해당 사각형들은 하나의 더 넓은 사각형으로 합쳐져야 합니다).
  • 직사각형은 Y를 주 정렬 키로, X를 보조 정렬 키로 하여 오름차순으로 정렬되어야 합니다.

참고: 역사적인이유로 , rects.size() 는 INT_MAX 보다 작아야 합니다( rectCount() 참조).

이 함수는 Qt 6.8에서 도입되었습니다.

rects()도 참조하십시오 .

QRegion QRegion::subtracted(const QRegion &r) const

이 영역에서 r 를 뺀 영역을 반환합니다.

영역 차감

그림은 왼쪽의 타원(left - right)에서 오른쪽의 타원을 뺀 결과를 보여줍니다.

intersected(), united(), xored()도 참조하십시오 .

[noexcept] void QRegion::swap(QRegion &other)

이 영역을 other 와 교환합니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.

[since 6.0] HRGN QRegion::toHRGN() const

주어진 영역과 동일한 HRGN을 반환합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

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

dx 영역을 X축 방향으로, dy 영역을 Y축 방향으로 이동시킵니다.

void QRegion::translate(const QPoint &point)

point.x() 영역을 x축을 따라, point.y() 영역을 y축을 따라 현재 위치를 기준으로 변환합니다. 양수 값을 지정하면 영역이 오른쪽과 아래쪽으로 이동합니다.

지정된 point 로 변환합니다.

이 함수는 오버로드된 함수입니다.

QRegion QRegion::translated(int dx, int dy) const

현재 위치를 기준으로 x축 방향으로 dx, y축 방향으로 dy 만큼 변환된 영역의 복사본을 반환합니다. 양수 값을 지정하면 영역이 오른쪽과 아래쪽으로 이동합니다.

translate()도 참조하십시오 .

QRegion QRegion::translated(const QPoint &p) const

현재 위치를 기준으로 x축을 따라 p.x(), y축을 따라 p.y() 만큼 변환된 사각형의 복사본을 반환합니다. 양수 값을 지정하면 사각형이 오른쪽과 아래쪽으로 이동합니다.

이 함수는 오버로드된 함수입니다.

translate()도 참조하십시오 .

QRegion QRegion::united(const QRect &rect) const

이 영역과 지정된 rect 의 합집합인 영역을 반환합니다.

intersected(), subtracted(), xored()도 참조하십시오 .

QRegion QRegion::united(const QRegion &r) const

이 영역과 r 의 합집합인 영역을 반환합니다.

지역 연합

그림은 두 타원형 영역의 합집합을 보여줍니다.

intersected(), subtracted(), xored()도 참조하십시오 .

QRegion QRegion::xored(const QRegion &r) const

이 영역과 r 의 배타적 합(XOR)에 해당하는 영역을 반환합니다.

XOR 연산을 적용한 영역

그림은 두 타원형 영역의 배타적 논리합(XOR)을 보여줍니다.

intersected(), united(), subtracted()도 참조하십시오 .

QRegion::operator QVariant() const

해당 영역을 다음과 같이 반환합니다. QVariant

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

이 영역이 other 영역과 다를 경우 ` true `을 반환하고, 그렇지 않은 경우 ` false`을 반환합니다.

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

이 영역과 r 에 intersected() 함수를 적용합니다. r1&r2 는 r1.intersected(r2) 와 동일합니다.

intersected()도 참조하십시오 .

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

이 함수는 오버로드된 함수입니다.

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

이 영역에 intersected() 함수를 적용하고 r 를 수행한 후, 그 결과를 이 영역에 할당합니다. r1&=r2 는 r1 = r1.intersected(r2)와 동일합니다.

intersected()도 참조하십시오 .

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

이것은 오버로드된 함수입니다.

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

이 영역과 r 에 united() 함수를 적용합니다. r1+r2 는 r1.united(r2) 와 동일합니다.

united() 및 operator|()도 참조하십시오 .

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

이것은 오버로드된 함수입니다.

QRegion &QRegion::operator+=(const QRect &rect)

이 영역과 지정된 영역 rect 의 합집합인 영역을 반환합니다.

united()도 참조하십시오 .

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

이 영역과 ` r `에 ` united()` 함수를 적용하고, 그 결과를 이 영역에 할당합니다. ` r1+=r2 `는 ` r1 = r1.united(r2)`와 동일합니다.

intersected()도 참조하십시오 .

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

이 영역에 ` subtracted()` 함수를 적용하고 ` r`를 반환합니다. ` r1-r2 `는 ` r1.subtracted(r2)`와 동일합니다.

subtracted()도 참조하십시오 .

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

이 영역에 ` subtracted()` 함수를 적용하고 ` r `을 수행한 후, 그 결과를 이 영역에 할당합니다. ` r1-=r2 `는 ` r1 = r1.subtracted(r2)`과 동일합니다.

subtracted()도 참조하십시오 .

[noexcept] QRegion &QRegion::operator=(QRegion &&other)

other 를 이 QRegion 인스턴스에 할당합니다.

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

이 영역에 ` r `를 할당하고, 해당 영역에 대한 참조를 반환합니다.

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

해당 영역이 r 와 일치하면 true 를 반환하고, 그렇지 않으면 false를 반환합니다.

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

이 영역과 r 에 xored() 함수를 적용합니다. r1^r2 는 r1.xored(r2) 와 동일합니다.

xored()도 참조하십시오 .

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

이 영역에 ` xored()` 함수를 적용하고 ` r `를 수행한 후, 그 결과를 이 영역에 할당합니다. ` r1^=r2 `는 ` r1 = r1.xored(r2)`와 동일합니다.

xored()도 참조하십시오 .

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

이 영역과 r 에 united() 함수를 적용합니다. r1|r2 는 r1.united(r2) 와 동일합니다.

united() 및 operator+()도 참조하십시오 .

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

이 영역에 ` united()` 함수를 적용하고, ` r `을 수행한 후 그 결과를 이 영역에 할당합니다. ` r1|=r2 `은 ` r1 = r1.united(r2)`과 동일합니다.

united()도 참조하십시오 .

관련 비회원

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

r 영역을 s 스트림에 기록하고, 해당 스트림에 대한 참조를 반환합니다.

QDataStream 연산자의 형식항목도 참조하십시오 .

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

s 스트림에서 특정 영역을 r 로 읽어들이고, 스트림에 대한 참조를 반환합니다.

QDataStream 연산자의 형식도참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.