QSvgRenderer Class
QSvgRenderer 클래스는 SVG 파일의 내용을 페인트 장치에 그리는 데 사용됩니다. 더 보기...
| 헤더: | #include <QSvgRenderer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Svg) target_link_libraries(mytarget PRIVATE Qt6::Svg) |
| qmake: | QT += svg |
| 상속: | QObject |
- 상속된 멤버를 포함한 모든 멤버 목록
- QSvgRenderer는 페인팅 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
속성
|
공개 함수
| QSvgRenderer(QObject *parent = nullptr) | |
| QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QString &filename, QObject *parent = nullptr) | |
| virtual | ~QSvgRenderer() |
| bool | animated() const |
| Qt::AspectRatioMode | aspectRatioMode() const |
| QRectF | boundsOnElement(const QString &id) const |
| QSize | defaultSize() const |
| bool | elementExists(const QString &id) const |
| int | framesPerSecond() const |
| bool | isAnimationEnabled() const |
| bool | isValid() const |
| QtSvg::Options | options() const |
| void | setAnimationEnabled(bool enable) |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
| void | setFramesPerSecond(int num) |
| void | setOptions(QtSvg::Options flags) |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
| QTransform | transformForElement(const QString &id) const |
| QRect | viewBox() const |
| QRectF | viewBoxF() const |
공개 슬롯
| bool | load(QXmlStreamReader *contents) |
| bool | load(const QByteArray &contents) |
| bool | load(const QString &filename) |
| void | render(QPainter *painter) |
| void | render(QPainter *painter, const QRectF &bounds) |
| void | render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) |
신호
| void | repaintNeeded() |
정적 공용 멤버
(since 6.8) void | setDefaultOptions(QtSvg::Options flags) |
상세 설명
QSvgRenderer를 사용하면 QWidget, QImage, QGLWidget을 포함한 모든 QPaintDevice 하위 클래스에 SVG(Scalable Vector Graphics)를 렌더링할 수 있습니다.
QSvgRenderer는 정적 도면의 불러오기 및 렌더링과 같은 SVG 렌더링의 기본 기능과 애니메이션과 같은 상호작용 기능을 지원하는 API를 제공합니다. 렌더링은 QPainter 를 사용하여 수행되므로, SVG 도면은 QPaintDevice 의 모든 하위 클래스에서 렌더링될 수 있습니다.
SVG 그림은 QSvgRenderer가 생성될 때 로드되거나, 나중에 load() 함수를 사용하여 로드됩니다. 데이터는 직렬화된 XML로 직접 제공되거나, 파일 이름을 통해 간접적으로 제공됩니다. 렌더러 생성 시 또는 그 이후에 유효한 파일이 로드된 경우, isValid()는 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. QSvgRenderer는 지정된 페인터를 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 렌더링하기 위한 render() 슬롯을 제공합니다.
defaultSize() 함수는 현재 로드된 SVG 파일을 렌더링하는 데 필요한 공간에 대한 정보를 제공합니다. 이는 QWidget 와 같이 상위 레이아웃에 크기 힌트를 자주 제공해야 하는 페인트 장치에 유용합니다. 도형의 기본 크기는 viewBox 속성을 통해 확인되는 가시 영역과 다를 수 있습니다.
애니메이션이 포함된 SVG 드로잉이 지원되며, 간단한 함수 및 속성 모음을 통해 제어할 수 있습니다:
- animated() 함수는 드로잉에 애니메이션 정보가 포함되어 있는지 여부를 나타냅니다.
- framesPerSecond 속성은 애니메이션이 재생되는 속도를 나타냅니다.
마지막으로, QSvgRenderer 클래스는 문서의 렌더링을 업데이트해야 할 때마다 발생되는 repaintNeeded() 신호를 제공합니다.
QSvgWidget, Qt SVG C++ Classes, 그리고 QPicture 을 참조하십시오.
속성 설명서
[since 6.7] animationEnabled : bool
이 속성은 SVG에 애니메이션 요소가 포함된 경우, 해당 애니메이션이 실행되어야 하는지 여부를 결정합니다.
이 속성을 false로 설정하면 애니메이션 타이머가 중지됩니다. 이 속성을 true로 설정하면 SVG에 애니메이션 요소가 포함된 경우 애니메이션 타이머가 시작됩니다.
SVG에 애니메이션이 포함되어 있지 않은 경우, 이 속성은 아무런 영향을 미치지 않습니다. 그 외의 경우, 이 속성의 기본값은 true입니다.
이 열거형은 Qt 6.7에서 도입되었습니다.
액세스 함수:
| bool | isAnimationEnabled() const |
| void | setAnimationEnabled(bool enable) |
animated()도 참조하십시오 .
aspectRatioMode : Qt::AspectRatioMode
렌더링이 SVG 뷰 박스의 종횡비를 어떻게 준수하는지
허용되는 모드는 다음과 같습니다:
- Qt::IgnoreAspectRatio (기본값): 종횡비는 무시되고 렌더링 결과가 대상 경계로 늘어나게 됩니다.
- Qt::KeepAspectRatio: 종횡비를 유지하면서 대상 경계 내에서 렌더링이 중앙에 배치되고 가능한 한 크게 확대됩니다.
액세스 함수:
| Qt::AspectRatioMode | aspectRatioMode() const |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
framesPerSecond : int
이 속성은 표시될 초당 프레임 수를 저장합니다.
현재 문서에 애니메이션이 없는 경우 초당 프레임 수는 0입니다.
액세스 함수:
| int | framesPerSecond() const |
| void | setFramesPerSecond(int num) |
animated()도 참조하십시오 .
[since 6.7] options : QtSvg::Options
이 속성은 SVG 파일의 구문 분석 및 렌더링과 관련된 다양한 기능을 활성화하거나 비활성화하는 데 사용할 수 있는 일련의 QtSvg::Option 플래그를 포함합니다.
이 속성이 적용되려면 load()이 실행되기 전에 이 속성을 before 로 설정해야 합니다. SVG 소스 매개변수를 받는 생성자는 생성 과정에서 로딩을 수행한다는 점에 유의하십시오.
이 열거형은 Qt 6.7에서 도입되었습니다.
액세스 함수:
| QtSvg::Options | options() const |
| void | setOptions(QtSvg::Options flags) |
setDefaultOptions도 참조하십시오 .
viewBox : QRectF
이 속성은 문서의 표시 영역을 논리 좌표계로 나타내는 직사각형을 저장합니다.
액세스 함수:
| QRectF | viewBoxF() const |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
멤버 함수 설명서
QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)
지정된 ` parent`를 사용하여 새로운 렌더러를 생성합니다.
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
지정된 ` parent `를 사용하여 새로운 렌더러를 생성하고, ` contents`로 지정된 스트림 리더를 통해 SVG 데이터를 불러옵니다.
QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
지정된 ` parent `을 사용하여 새로운 렌더러를 생성하고, ` contents`으로 지정된 바이트 배열에서 SVG 데이터를 불러옵니다.
QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)
지정된 ` parent `을 사용하여 새로운 렌더러를 생성하고, 지정된 ` filename`을 통해 SVG 파일의 내용을 불러옵니다.
[virtual noexcept] QSvgRenderer::~QSvgRenderer()
렌더러를 삭제합니다.
bool QSvgRenderer::animated() const
현재 문서에 애니메이션 요소가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
framesPerSecond()도 참조하십시오 .
QRectF QSvgRenderer::boundsOnElement(const QString &id) const
지정된 id 를 사용하여 항목의 경계 사각형을 반환합니다. 상위 요소의 변환 행렬은 해당 요소의 경계에 영향을 미치지 않습니다.
transformForElement()도 참조하십시오 .
QSize QSvgRenderer::defaultSize() const
문서 내용의 기본 크기를 반환합니다.
bool QSvgRenderer::elementExists(const QString &id) const
지정된 ` id `을 가진 요소가 현재 구문 분석 중인 SVG 파일에 존재하고 렌더링 가능한 요소인 경우 `true`를 반환합니다.
참고: 이 메서드는 렌더링 가능한 요소에 대해서만 true를 반환합니다. 즉, fill/stroke 스타일 속성의 일부로 간주되는 요소(예: radialGradients)는 "id" 속성이 지정되어 있더라도 이 메서드를 통해 검색되지 않습니다.
bool QSvgRenderer::isValid() const
유효한 현재 문서가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)
contents 에 지정된 SVG를 불러오며, 콘텐츠가 성공적으로 파싱되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
리더는 현재 위치에서 사용됩니다. contents 의 값이 null 인 경우, 동작은 정의되지 않습니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::load));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](QXmlStreamReader *contents) { receiver->load(contents); }); [slot] bool QSvgRenderer::load(const QByteArray &contents)
지정된 SVG 형식 contents 을 불러오며, 콘텐츠가 성공적으로 구문 분석되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::load));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](const QByteArray &contents) { receiver->load(contents); }); [slot] bool QSvgRenderer::load(const QString &filename)
filename 로 지정된 SVG 파일을 불러오며, 콘텐츠가 성공적으로 파싱되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::load));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](const QString &filename) { receiver->load(filename); }); [slot] void QSvgRenderer::render(QPainter *painter)
지정된 ` painter`를 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 렌더링합니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::render));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](QPainter *painter) { receiver->render(painter); }); [slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)
지정된 페인터( painter ) 내에서, 지정된 영역( bounds )을 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 렌더링합니다. 영역( bounds )이 비어 있지 않은 경우, SVG에서 암시하는 종횡비는 무시하고 출력을 해당 영역을 채우도록 크기를 조정합니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::render));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](QPainter *painter, const QRectF &bounds) { receiver->render(painter, bounds); }); [slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())
지정된 painter 를 사용하여, 지정된 bounds 에서 elementId 로 주어진 요소를 렌더링합니다. 경계 사각형이 지정되지 않은 경우, SVG 요소는 전체 페인트 장치에 매핑됩니다.
참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
svgRenderer, qOverload(&QSvgRenderer::render));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
svgRenderer, [receiver = svgRenderer](QPainter *painter, const QString &elementId, const QRectF &bounds) { receiver->render(painter, elementId, bounds); }); [signal] void QSvgRenderer::repaintNeeded()
이 신호는 문서의 렌더링을 업데이트해야 할 때마다 발생하며, 주로 애니메이션을 위해 사용됩니다.
[static, since 6.8] void QSvgRenderer::setDefaultOptions(QtSvg::Options flags)
렌더러가 생성될 때 사용되는 옵션 플래그를 ` flags`로 설정합니다. 기본적으로 플래그는 설정되어 있지 않습니다.
실행 시에는 QT_SVG_DEFAULT_OPTIONS 환경 변수를 통해 이 설정을 재정의할 수 있습니다.
이 함수는 Qt 6.8에서 도입되었습니다.
QTransform QSvgRenderer::transformForElement(const QString &id) const
지정된 id 를 가진 요소의 변환 행렬을 반환합니다. 이 행렬은 해당 요소의 부모 요소들의 변환을 곱한 결과입니다. 요소 자체의 변환은 포함되지 않습니다.
논리 좌표계에서 요소의 경계 사각형을 구하려면, boundsOnElement() 함수에서 반환된 사각형에 이 행렬을 적용하면 됩니다.
boundsOnElement()도 참조하십시오 .
QRect QSvgRenderer::viewBox() const
viewBoxF() .toRect()를 반환합니다.
setViewBox() 및 viewBoxF()도 참조하십시오 .
© 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.