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(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를 사용하면 확장 가능한 벡터 그래픽(SVG)을 QWidget, QImage, QGLWidget을 포함한 모든 QPaintDevice 서브클래스에 렌더링할 수 있습니다.

QSvgRenderer는 정적 도면의 로드 및 렌더링과 같은 SVG 렌더링의 기본 기능과 애니메이션과 같은 더 많은 대화형 기능을 지원하는 API를 제공합니다. 렌더링은 QPainter 을 사용하여 수행되므로 SVG 도면은 QPaintDevice 의 모든 하위 클래스에서 렌더링할 수 있습니다.

SVG 도면은 QSvgRenderer가 생성될 때 로드되거나 load() 함수를 사용하여 나중에 로드됩니다. 데이터는 직렬화된 XML로 직접 제공되거나 파일 이름을 사용하여 간접적으로 제공됩니다. 렌더러가 생성될 때 또는 나중에 유효한 파일이 로드된 경우 isValid()는 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. QSvgRenderer는 지정된 페인터를 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 렌더링하는 render() 슬롯을 제공합니다.

defaultSize() 함수는 현재 로드된 SVG 파일을 렌더링하는 데 필요한 공간에 대한 정보를 제공합니다. 이는 종종 상위 레이아웃에 크기 힌트를 제공해야 하는 QWidget 와 같은 페인트 장치에 유용합니다. 드로잉의 기본 크기는 viewBox 속성을 사용하여 확인할 수 있는 가시 영역과 다를 수 있습니다.

애니메이션 SVG 도면이 지원되며 간단한 함수 및 속성 모음으로 제어할 수 있습니다:

  • animated() 함수는 그림에 애니메이션 정보가 포함되어 있는지 여부를 나타냅니다.
  • framesPerSecond 속성에는 애니메이션이 재생되는 속도가 포함됩니다.

마지막으로, QSvgRenderer 클래스는 문서의 렌더링을 업데이트해야 할 때마다 repaintNeeded() 신호를 제공합니다.

QSvgWidget, Qt SVG C++ ClassesQPicture 를 참조하세요.

속성 문서

[since 6.7] animationEnabled : bool

이 속성은 SVG에 애니메이션이 있는 경우 애니메이션을 실행할지 여부를 보유합니다.

속성을 false로 설정하면 애니메이션 타이머가 중지됩니다. SVG에 애니메이션 요소가 포함된 경우 속성을 true로 설정하면 애니메이션 타이머가 시작됩니다.

SVG에 애니메이션이 적용되지 않은 경우 속성은 아무런 영향을 미치지 않습니다. 그렇지 않으면 프로퍼티의 기본값은 참입니다.

이 프로퍼티는 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 플래그 세트가 있습니다.

이 속성을 적용하려면 before load ()가 실행될 때 이 속성을 설정해야 합니다. 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

현재 문서에 애니메이션 요소가 포함되어 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

framesPerSecond()도 참조하세요 .

QRectF QSvgRenderer::boundsOnElement(const QString &id) const

주어진 id 을 사용하여 항목의 경계 사각형을 반환합니다. 부모 요소의 변환 행렬은 요소의 경계에 영향을 주지 않습니다.

transformForElement()도 참조하세요 .

QSize QSvgRenderer::defaultSize() const

문서 콘텐츠의 기본 크기를 반환합니다.

bool QSvgRenderer::elementExists(const QString &id) const

주어진 id 요소가 현재 파싱된 SVG 파일에 존재하고 렌더링 가능한 요소인 경우 true를 반환합니다.

참고: 이 메서드는 렌더링할 수 있는 요소에 대해서만 참을 반환합니다. 즉, 채우기/획 스타일 속성의 일부로 간주되는 요소(예: "id" 속성이 강하게 표시된 방사형 그라데이션)는 이 메서드에서 찾을 수 없습니다.

bool QSvgRenderer::isValid() const

유효한 현재 문서가 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)

contents 에 지정된 SVG를 로드하여 콘텐츠가 성공적으로 구문 분석되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

리더는 현재 위치에서 사용됩니다. contentsnull 인 경우 동작이 정의되지 않습니다.

[slot] bool QSvgRenderer::load(const QByteArray &contents)

지정된 SVG 형식 contents 을 로드하여 콘텐츠가 성공적으로 구문 분석되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

[slot] bool QSvgRenderer::load(const QString &filename)

filename 에 지정된 SVG 파일을 로드하여 콘텐츠가 성공적으로 구문 분석되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

[slot] void QSvgRenderer::render(QPainter *painter)

주어진 painter 을 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 렌더링합니다.

[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)

지정된 painter 을 사용하여 현재 문서 또는 애니메이션 문서의 현재 프레임을 페인터 내의 지정된 bounds 에 렌더링합니다. bounds 이 비어 있지 않으면 SVG에 암시된 종횡비를 무시하고 출력의 크기가 조정되어 채워집니다.

[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

지정된 bounds 에서 지정된 painter 을 사용하여 지정된 요소를 elementId 로 렌더링합니다. 경계 사각형이 지정되지 않은 경우 SVG 요소는 전체 페인트 장치에 매핑됩니다.

[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()도 참조하십시오 .

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