이 페이지에서

QFileSelector Class

QFileSelector는 파일 변형을 편리하게 선택할 수 있는 방법을 제공합니다. 더 보기...

헤더: #include <QFileSelector>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속: QObject

공개 함수

QFileSelector(QObject *parent = nullptr)
virtual ~QFileSelector()
QStringList allSelectors() const
QStringList extraSelectors() const
QString select(const QString &filePath) const
QUrl select(const QUrl &filePath) const
void setExtraSelectors(const QStringList &list)

상세 설명

QFileSelector는 플랫폼이나 장치 특성에 따라 파일 변형을 선택하는 데 편의를 제공하는 클래스입니다. 이를 통해 배포 단계에서 올바른 변형을 결정할 수 없는 경우와 같은 특정 상황에서, 모든 변형을 포함하는 단일 코드베이스를 보다 쉽게 개발하고 배포할 수 있습니다.

QFileSelector 사용법

항상 동일한 파일을 사용하는 경우에는 QFileSelector를 사용할 필요가 없습니다.

다음 사용 예제를 살펴보십시오. 이 예제에서는 서로 다른 로케일에 따라 다른 설정 파일을 사용하고자 합니다. 로케일 간에 코드를 다음과 같이 선택할 수 있습니다:

QString defaultsBasePath = "data/";
QString defaultsPath = defaultsBasePath + "defaults.conf";
QString localizedPath = defaultsBasePath
        + QString("%1/defaults.conf").arg(QLocale().name());
if (QFile::exists(localizedPath))
    defaultsPath = localizedPath;
QFile defaults(defaultsPath);

마찬가지로, 대상 플랫폼에 따라 다른 데이터 파일을 선택하려는 경우 코드는 다음과 같이 작성될 수 있습니다:

    QString defaultsPath = "data/defaults.conf";
#if defined(Q_OS_ANDROID)
    defaultsPath = "data/android/defaults.conf";
#elif defined(Q_OS_IOS)
    defaultsPath = "data/ios/defaults.conf";
#endif
    QFile defaults(defaultsPath);

QFileSelector는 이러한 반복적인 코드를 직접 작성하는 대신 편리한 대안을 제공하며, 후자의 경우 재컴파일 없이도 플랫폼별 구성을 바로 사용할 수 있게 해줍니다. 또한 QFileSelector를 사용하면 여러 선택기를 편리하게 연쇄할 수 있어, 예를 들어 특정 플랫폼과 로케일의 조합에서만 다른 파일을 선택할 수 있습니다. 플랫폼 및/또는 로케일을 기준으로 선택하려면 코드는 다음과 같습니다:

QFileSelector selector;
QFile defaultsFile(selector.select("data/defaults.conf"));

선택할 파일들은 '+' 와 선택기 이름으로 명명된 디렉터리에 배치됩니다. 위 예제에서 플랫폼 구성을 선택하려면 다음 위치에 파일을 배치하면 됩니다:

data/defaults.conf
data/+android/defaults.conf
data/+ios/+en_GB/defaults.conf

선택된 파일을 찾기 위해 QFileSelector는 기본 파일과 동일한 디렉터리를 검색합니다. 활성 선택기가 지정된 +<selector> 형식의 디렉터리가 있는 경우, QFileSelector는 기본 파일보다 해당 디렉터리 내의 동일한 파일 이름을 가진 파일을 우선적으로 선택합니다. 이러한 디렉터리는 중첩하여 여러 선택기를 확인하도록 구성할 수 있습니다. 예를 들면 다음과 같습니다:

images/background.png
images/+android/+en_GB/background.png

이러한 파일이 있는 경우, 안드로이드 플랫폼에서는 로케일이 en_GB일 때만 다른 파일을 선택하게 됩니다.

유효한 선택기가 없는 경우의 오류 처리를 위해, 모든 배포에 선택기가 존재할 것으로 예상되더라도 기본 파일이나 오류 처리 파일을 기본 파일 위치에 두는 것이 좋습니다.

향후 버전에서는 일부 셀렉터가 배포 시점의 정적 요소로 표시되어 최적화를 위해 배포 단계에서 이동될 수 있습니다. 셀렉터는 성능에 부담을 주므로, 성능이 중요한 코드가 포함된 상황에서는 사용을 피하는 것이 좋습니다.

셀렉터 추가

일반적으로 사용할 수 있는 선택기는 다음과 같습니다.

  • platform, 애플리케이션이 실행되는 플랫폼과 일치하는 다음 문자열 중 하나(이 목록은 모든 경우를 포함하지는 않음): android, harmonyos, ios, osx, darwin, mac, macos, linux, qnx, unix, windows. Linux의 경우, 확인 가능한 경우 debian, fedora 또는 opensuse와 같은 배포판 이름도 포함됩니다.
  • locale: QLocale().name()과 동일합니다.

QT_FILE_SELECTORS 환경 변수를 통해 추가 선택자가 추가되며, 이 변수는 설정 시 쉼표로 구분된 선택자 집합이어야 합니다. 이 변수는 한 번만 읽힌다는 점에 유의하십시오. 애플리케이션이 실행 중일 때 변수가 변경되더라도 선택자가 업데이트되지 않을 수 있습니다. 초기 선택자 집합은 처음 사용할 때 단 한 번만 평가됩니다.

사용자 정의 동작을 위해 런타임에 추가 선택자를 설정할 수도 있습니다. 이러한 선택자는 향후 select() 호출 시 사용됩니다. 추가 선택자 목록이 변경된 경우, select() 호출은 새로운 목록을 사용하며 반환 값이 달라질 수 있습니다.

여러 선택자가 적용될 때의 충돌 해결

동일한 파일에 여러 선택자가 적용될 수 있는 경우, 가장 먼저 일치하는 선택자가 선택됩니다. 선택자가 확인되는 순서는 다음과 같습니다:

  1. setExtraSelectors()을 통해 설정된 선택자(목록에 나열된 순서대로)
  2. QT_FILE_SELECTORS 환경 변수에 정의된 선택자(왼쪽에서 오른쪽 순서대로)
  3. 로케일
  4. 플랫폼

다음은 여러 선택자가 동시에 일치하는 예시입니다. 이 예시에서는 플랫폼 선택자를 사용하며, 여기에 사용자 자격 증명을 기반으로 애플리케이션에서 "admin"이라는 추가 선택자가 설정됩니다. 이 예시는 모든 선택자가 존재할 경우 일치 조건이 가장 낮은 파일이 선택되도록 정렬되어 있습니다:

images/background.png
images/+linux/background.png
images/+windows/background.png
images/+admin/background.png
images/+admin/+linux/background.png

추가 선택자는 플랫폼 선택자보다 먼저 확인되므로, 'admin' 선택자가 설정된 경우 Windows에서는 +admin/background.png 가 선택되고, 'admin' 선택자가 설정되지 않은 경우 Windows에서는 +windows/background.png 가 선택됩니다. Linux에서는 'admin'이 설정된 경우 +admin/+linux/background.png 가 선택되고, 설정되지 않은 경우 +linux/background.png 가 선택됩니다.

멤버 함수 문서

[explicit] QFileSelector::QFileSelector(QObject *parent = nullptr)

QFileSelector 인스턴스를 생성합니다. 이 인스턴스는 다른 QFileSelector 인스턴스와 동일한 정적 선택기를 가지지만, 자체적인 추가 선택기 집합도 갖습니다.

지정된 경우, 해당 QObject parent 을 갖게 됩니다.

[virtual noexcept] QFileSelector::~QFileSelector()

이 선택자 인스턴스를 삭제합니다.

QStringList QFileSelector::allSelectors() const

이 인스턴스에서 사용되는 선택자의 전체 정렬된 목록을 반환합니다.

QStringList QFileSelector::extraSelectors() const

이 인스턴스에 프로그래밍 방식으로 추가된 추가 선택자 목록을 반환합니다.

setExtraSelectors()도 참조하십시오 .

QString QFileSelector::select(const QString &filePath) const

이 함수는 런타임 시점의 조건에 따라 경로의 선택된 버전을 반환합니다. 선택할 수 있는 파일이 없는 경우, 원본 filePath 를 반환합니다.

원본 파일이 존재하지 않는 경우, 원본 filePath 가 반환됩니다. 즉, 대체할 수 있는 기본 파일이 반드시 있어야 하며, 선택 가능한 하위 디렉터리에만 파일이 존재해서는 안 됩니다.

선택 알고리즘에 대해서는 클래스 개요를 참조하십시오.

QUrl QFileSelector::select(const QUrl &filePath) const

이 메서드는 ` QUrl ` 객체에 대해 `select`를 적용하는 편의 버전입니다. 스키마가 `file`이나 `qrc`가 아닌 경우, 즉시 ` filePath `가 반환됩니다. 그렇지 않은 경우, ` filePath `의 경로에 `select`가 적용되며, 선택된 경로와 나머지 ` QUrl ` 부분은 ` filePath`와 동일하게 유지된 ` QUrl `가 반환됩니다.

선택 알고리즘에 대해서는 클래스 개요를 참조하십시오.

void QFileSelector::setExtraSelectors(const QStringList &list)

이 인스턴스에 프로그래밍 방식으로 추가된 추가 선택자의 ` list `를 설정합니다.

이러한 선택자는 자동으로 선택된 선택자보다 우선순위가 높습니다.

extraSelectors()도 참조하십시오 .

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