QResource Class
QResource 클래스는 리소스에서 직접 읽을 수 있는 인터페이스를 제공합니다. 더 보기...
Header: | #include <QResource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QResource는 입력/출력 및 네트워킹의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입합니다.
공용 유형
enum | Compression { NoCompression, ZlibCompression, ZstdCompression } |
공용 함수
QResource(const QString &file = QString(), const QLocale &locale = QLocale()) | |
~QResource() | |
QString | absoluteFilePath() const |
QResource::Compression | compressionAlgorithm() const |
const uchar * | data() const |
QString | fileName() const |
bool | isValid() const |
QDateTime | lastModified() const |
QLocale | locale() const |
void | setFileName(const QString &file) |
void | setLocale(const QLocale &locale) |
qint64 | size() const |
QByteArray | uncompressedData() const |
qint64 | uncompressedSize() const |
정적 공용 멤버
bool | registerResource(const QString &rccFileName, const QString &mapRoot = QString()) |
bool | registerResource(const uchar *rccData, const QString &mapRoot = QString()) |
bool | unregisterResource(const QString &rccFileName, const QString &mapRoot = QString()) |
bool | unregisterResource(const uchar *rccData, const QString &mapRoot = QString()) |
보호된 함수
상세 설명
QResource는 단일 리소스 엔티티와 관련된 데이터 집합(및 자식일 수도 있음)을 나타내는 객체입니다. QResource는 원시 형식의 바이트에 직접 액세스할 수 있습니다. 이러한 방식으로 직접 액세스를 사용하면 버퍼 복사나 방향 지정 없이 데이터를 읽을 수 있습니다. 리소스 엔티티가 마치 파일인 것처럼 상호 작용할 때 종종 방향 지정이 유용하며, 이는 QFile 을 사용하여 달성할 수 있습니다. QResource 뒤에 있는 데이터와 자식은 일반적으로 애플리케이션/라이브러리로 컴파일되지만 런타임에 리소스를 로드할 수도 있습니다. 런타임에 로드되는 경우 리소스 파일은 하나의 큰 데이터 집합으로 로드된 다음 리소스 트리에 대한 참조를 통해 조각으로 제공됩니다.
QResource는 /
문자로 루팅된 파일 시스템으로 취급되는 절대 경로로 로드하거나 :
문자로 루팅된 리소스 표기법으로 로드할 수 있습니다. QDir::searchPaths ()에서 반환된 경로 목록에서 찾을 수 있는 상대 리소스도 열 수 있습니다.
파일을 나타내는 QResource에는 파일을 뒷받침하는 데이터가 있으며, 이 데이터는 압축될 수 있으며, 이 경우 실제 데이터에 액세스하려면 qUncompress()를 사용해야 합니다. QFile 을 통해 액세스하는 경우 암시적으로 발생합니다. 디렉터리를 나타내는 QResource에는 데이터 없이 자식만 있습니다.
동적 리소스 로드
리소스는 애플리케이션의 바이너리에서 제외하고 런타임에 필요할 때 registerResource() 함수를 사용하여 로드할 수 있습니다. registerResource ()에 전달되는 리소스 파일은 rcc에서 생성한 바이너리 리소스여야 합니다. 바이너리 리소스에 대한 자세한 정보는 Qt 리소스 시스템 문서를 참조하십시오.
이는 설정에 따라 변경될 수 있거나 사용자가 편집한 후 나중에 다시 만들 수 있는 대규모 애플리케이션 아이콘 세트를 로드할 때 유용할 수 있습니다. 리소스는 단일 파일 읽기 작업의 결과 또는 메모리 매핑된 파일로 즉시 메모리에 로드됩니다.
이 접근 방식은 단일 파일만 로드되고 setFileName()에서 요청된 경로를 통해 데이터 조각이 제공되므로 성능이 크게 향상될 수 있습니다.
unregisterResource() 함수는 특정 파일에 대한 참조를 제거합니다. 현재 등록되지 않은 파일과 관련된 리소스를 참조하는 QResource 객체가 있는 경우 해당 객체는 계속 유효하지만 리소스 파일 자체는 리소스 루트에서 제거되므로 이 리소스 데이터를 가리키는 QResource를 더 이상 생성할 수 없습니다. 리소스 자체는 리소스를 가리키는 마지막 QResource가 삭제되면 메모리에서 매핑이 해제됩니다.
손상 및 보안
QResource 클래스는 전달된 파일에 대해 몇 가지 검사를 수행하여 현재 버전의 Qt에서 지원되는지 여부를 확인합니다. 이러한 검사는 파일 헤더가 컴파일되지 않은 기능(예: Zstandard 압축 해제)을 요청하지 않거나 파일이 향후 버전의 Qt가 아닌지 확인하기 위한 것일 뿐입니다. 전체 파일의 유효성을 확인하지는 않습니다.
출처를 신뢰할 수 없는 파일에는 QResource를 사용해서는 안 됩니다. 응용 프로그램은 최소한 응용 프로그램 자체나 플러그인의 출처만큼 신뢰할 수 있는 리소스 파일만 로드하도록 설계해야 합니다.
Qt 리소스 시스템, QFile, QDir, 및 QFileInfo 를참조하십시오 .
멤버 유형 문서
enum QResource::Compression
이 열거형은 compressionAlgorithm()에서 페이로드를 압축하는 데 사용한 알고리즘을 나타내는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
QResource::NoCompression | 0 | 콘텐츠가 압축되지 않음 |
QResource::ZlibCompression | 1 | 콘텐츠는 zlib를 사용하여 압축되며 qUncompress() 함수를 사용하여 압축을 해제할 수 있습니다. |
QResource::ZstdCompression | 2 | 콘텐츠는 zstd를 사용하여 압축됩니다. 압축을 풀려면 zstd 라이브러리의 ZSTD_decompress 함수를 사용합니다. |
compressionAlgorithm()도 참조하세요 .
멤버 함수 문서
QResource::QResource(const QString &file = QString(), const QLocale &locale = QLocale())
file 을 가리키는 QResource를 생성합니다. locale 은 리소스 데이터의 특정 지역화를 로드하는 데 사용됩니다.
QFileInfo, QDir::searchPaths(), setFileName() 및 setLocale()도 참조하세요 .
[noexcept]
QResource::~QResource()
QResource 개체의 리소스를 해제합니다.
QString QResource::absoluteFilePath() const
QResource 이 나타내는 실제 경로를 반환하며, 리소스가 QDir::searchPaths()을 통해 발견된 경우 경로에 표시됩니다.
fileName()도 참조하세요 .
[protected]
QStringList QResource::children() const
이 디렉터리에 있는 모든 리소스 목록을 반환하며, 리소스가 파일을 나타내는 경우 목록은 비어 있습니다.
isDir()도 참조하세요 .
QResource::Compression QResource::compressionAlgorithm() const
이 리소스가 압축된 압축 유형(있는 경우)을 반환합니다. 압축되지 않은 경우 이 함수는 QResource::NoCompression 를 반환합니다.
이 함수가 QResource::ZlibCompression 를 반환하면 qUncompress() 함수를 사용하여 데이터 압축을 해제할 수 있습니다. Qt 5.13까지는 이것이 가능한 유일한 압축 알고리즘이었습니다.
이 함수가 QResource::ZstdCompression 를 반환하면 Zstandard 라이브러리 함수(<zstd.h>
헤더)를 사용해야 합니다. Qt는 래퍼를 제공하지 않습니다.
Zstandard 매뉴얼을 참조하십시오.
const uchar *QResource::data() const
이 리소스가 나타내는 읽기 전용 데이터 세그먼트에 대한 직접 액세스를 반환합니다. 리소스가 압축된 경우 반환되는 데이터도 압축됩니다. 그런 다음 호출자는 데이터의 압축을 풀거나 uncompressedData()를 사용해야 합니다. 리소스가 디렉터리인 경우 nullptr
가 반환됩니다.
uncompressedData(), size() 및 isFile()도 참조하세요 .
QString QResource::fileName() const
전달된 QResource 이 나타내는 파일의 전체 경로를 반환합니다.
setFileName() 및 absoluteFilePath()도 참조하세요 .
[protected]
bool QResource::isDir() const
리소스가 디렉터리를 나타내므로 children()가 포함될 수 있는 경우 true
를 반환하고, 파일을 나타내는 경우 false를 반환합니다.
isFile()도 참조하세요 .
[protected]
bool QResource::isFile() const
리소스가 파일을 나타내며 이를 뒷받침하는 데이터가 있으면 true
을 반환하고, 디렉터리를 나타내면 false를 반환합니다.
isDir()도 참조하세요 .
bool QResource::isValid() const
리소스가 리소스 계층 구조에 실제로 존재하면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
QDateTime QResource::lastModified() const
리소스로 패키징하기 전에 파일을 마지막으로 수정한 날짜와 시간을 반환합니다.
QLocale QResource::locale() const
QResource 에 대한 데이터를 찾는 데 사용된 로캘을 반환합니다.
setLocale()도 참조하세요 .
[static]
bool QResource::registerResource(const QString &rccFileName, const QString &mapRoot = QString())
mapRoot 으로 지정된 리소스 트리의 위치에 지정된 rccFileName 으로 리소스를 등록하고 파일이 성공적으로 열리면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
unregisterResource()도 참조하세요 .
[static]
bool QResource::registerResource(const uchar *rccData, const QString &mapRoot = QString())
mapRoot 으로 지정된 리소스 트리의 위치에 지정된 rccData 으로 리소스를 등록하고 파일이 성공적으로 열리면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
경고: 데이터는 리소스 데이터를 참조할 수 있는 QFile 의 수명 동안 유효하게 유지되어야 합니다.
unregisterResource()도 참조하세요 .
void QResource::setFileName(const QString &file)
file 을 가리키도록 QResource 을 설정합니다. file 은 절대적일 수 있으며, 이 경우 직접 열리고 상대적일 경우 QDir::searchPaths()에서 파일을 찾으려고 시도합니다.
fileName() 및 absoluteFilePath()도 참조하세요 .
void QResource::setLocale(const QLocale &locale)
locale 에 대해서만 리소스의 현지화를 로드하도록 QResource 을 설정합니다. 특정 로캘에 대한 리소스를 찾을 수 없는 경우 C 로캘이 사용됩니다.
locale() 및 setFileName()도 참조하세요 .
qint64 QResource::size() const
리소스를 뒷받침하는 저장된 데이터의 크기를 반환합니다.
리소스가 압축된 경우 이 함수는 압축된 데이터의 크기를 반환합니다. 압축되지 않은 크기는 uncompressedSize()를 참조하세요.
data(), uncompressedSize() 및 isFile()도 참조하세요 .
QByteArray QResource::uncompressedData() const
데이터가 압축되어 저장된 경우 먼저 압축을 풀고 리소스 데이터를 반환합니다. 리소스가 디렉터리이거나 압축을 푸는 동안 오류가 발생하면 null QByteArray 이 반환됩니다.
참고: 데이터가 압축된 경우 이 함수는 호출될 때마다 압축을 해제합니다. 결과는 호출 간에 캐시되지 않습니다.
uncompressedSize(), size(), compressionAlgorithm() 및 isFile()도 참조하세요 .
qint64 QResource::uncompressedSize() const
이 리소스에 있는 데이터의 크기를 반환합니다. 데이터가 압축되지 않은 경우 이 함수는 size()와 동일한 값을 반환합니다. 압축된 경우 이 함수는 저장된 스트림에서 압축되지 않은 원본 데이터의 크기를 추출합니다.
size(), uncompressedData() 및 isFile()도 참조하세요 .
[static]
bool QResource::unregisterResource(const QString &rccFileName, const QString &mapRoot = QString())
mapRoot 으로 지정된 리소스 트리의 위치에서 주어진 rccFileName 으로 리소스를 등록 해제하고 리소스가 성공적으로 언로드되고 리소스에 대한 참조가 없는 경우 true
을 반환하고 그렇지 않으면 false
을 반환합니다.
registerResource()도 참조하세요 .
[static]
bool QResource::unregisterResource(const uchar *rccData, const QString &mapRoot = QString())
mapRoot 으로 지정된 리소스 트리의 위치에서 주어진 rccData 으로 리소스를 등록 해제하고 리소스가 성공적으로 언로드되고 리소스에 대한 참조가 없는 경우 true
을 반환하고 그렇지 않으면 false
을 반환합니다.
registerResource()도 참조하세요 .
© 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.