QRegion Class

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

Header: #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
QVariant 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은 다시 칠할 화면 영역의 양을 최소화하는 데 가장 적합한 도구입니다.

이 클래스는 렌더링할 도형을 만드는 데 적합하지 않으며 특히 윤곽선으로 사용하기에는 적합하지 않습니다. QPainter 에 사용할 경로와 도형을 만들려면 QPainterPath 을 사용하세요.

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

영역 생성 및 사용

영역은 직사각형, 타원, 다각형 또는 비트맵으로 만들 수 있습니다. united (), intersected(), subtracted() 또는 xored()(독점 또는)를 사용하여 간단한 영역을 결합하여 복잡한 영역을 만들 수 있습니다. translate ()를 사용하여 영역을 이동할 수 있습니다.

영역이 isEmpty() 또는 contains()인 경우 QPoint 또는 QRect 경계 사각형은 boundingRect()로 확인할 수 있습니다.

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

복잡한 영역 사용 예시:

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 의 픽셀로 구성되며, 각 픽셀은 마치 1×1 직사각형인 것처럼 Qt::color1 입니다.

이 생성자를 사용하면 복잡한 영역이 생성되어 페인팅 속도가 느려질 수 있습니다. QPixmap::setMask ()를 사용하면 마스크된 픽셀맵을 훨씬 빠르게 그릴 수 있습니다.

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

fillRule 에 지정된 채우기 규칙을 사용하여 점 배열 a 에서 다각형 영역을 구축합니다.

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

경고: 이 생성자를 사용하면 복잡한 영역을 만드는 데 사용할 수 있으며, 이 경우 페인팅 속도가 느려집니다.

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

직사각형 또는 타원형 영역을 만듭니다.

tRectangle 인 경우 영역은 채워진 직사각형(x, y, w, h)입니다. tEllipse 인 경우 영역은 중심이 (x + w / 2, y + h / 2) 및 크기 (w,h)인 채워진 타원입니다.

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

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

지역 유형이 t 인 직사각형 r 을 기반으로 지역을 만듭니다.

사각형이 유효하지 않은 경우 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 의 교차점인 영역을 반환합니다.

Region Intersection

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

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

영역을 구성하는 겹치지 않는 직사각형의 스팬을 반환합니다. 스팬은 이 영역에 대한 다음 변이(논컨스트) 메서드를 호출할 때까지 유효합니다.

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

참고: 이 함수는 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 을 뺀 영역을 반환합니다.

Region Subtraction

그림은 오른쪽의 타원을 왼쪽의 타원(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)

X축을 따라 dx 영역을 변환(이동)하고 Y축을 따라 dy 영역을 변환(이동)합니다.

void QRegion::translate(const QPoint &point)

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

현재 위치를 기준으로 x축을 따라 point.x() 영역을 변환하고 y축을 따라 point.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 의 합집합인 영역을 반환합니다.

Region Union

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

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

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

이 영역과 r 의 배타적이거나 (XOR) 인 영역을 반환합니다.

Region XORed

그림은 배타적이거나 두 개의 타원형 영역을 보여줍니다.

intersected(), united() 및 subtracted()도 참조하세요 .

QVariant QRegion::operator QVariant() const

영역을 QVariant

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

이 지역이 other 지역과 다른 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

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

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

intersected()도 참조하세요 .

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

과부하가 걸린 기능입니다.

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

intersected() 함수를 이 영역과 r 에 적용하고 결과를 이 영역에 할당합니다. r1&=r2r1 = r1.intersected(r2)와 같습니다.

intersected()도 참조하세요 .

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

과부하가 걸린 기능입니다.

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

이 영역에 united() 함수를 적용하면 r. r1+r2r1.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)

united() 함수를 이 지역과 r 에 적용하고 결과를 이 지역에 할당합니다. r1+=r2r1 = r1.united(r2) 과 동일합니다.

intersected()도 참조하세요 .

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

이 영역에 subtracted() 함수를 적용하면 r. r1-r2r1.subtracted(r2) 과 동일합니다.

subtracted()도 참조하세요 .

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

subtracted() 함수를 이 지역과 r 에 적용하고 결과를 이 지역에 할당합니다. r1-=r2r1 = 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

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

xored()도 참조하세요 .

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

xored() 함수를 이 지역과 r 에 적용하고 결과를 이 지역에 할당합니다. r1^=r2r1 = r1.xored(r2) 과 동일합니다.

xored()도 참조하세요 .

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

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

united() 및 operator+()도 참조하세요 .

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

united() 함수를 이 지역과 r 에 적용하고 결과를 이 지역에 할당합니다. r1|=r2r1 = r1.united(r2) 과 동일합니다.

united()도 참조하세요 .

관련 비회원

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

r 지역을 s 스트림에 쓰고 스트림에 대한 참조를 반환합니다.

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

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

s 스트림에서 r 로 지역을 읽고 스트림에 대한 참조를 반환합니다.

QDataStream 연산자의 형식도참조하세요 .

© 2025 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.