QFileSelector Class

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

Header: #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는 기본 파일과 동일한 디렉터리를 찾습니다. 활성 선택기가 있는 +<선택기> 형식의 디렉터리가 있는 경우 QFileSelector는 기본 파일보다 해당 디렉터리의 파일 이름이 같은 파일을 선호합니다. 예를 들어 이러한 디렉터리를 중첩하여 여러 선택기를 검사할 수 있습니다:

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

이러한 파일을 사용할 수 있는 경우 안드로이드 플랫폼에서 다른 파일을 선택하지만 로캘이 en_GB인 경우에만 해당됩니다.

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

향후 버전에서는 일부가 배포 시 정적으로 표시되어 배포 단계 중에 최적화를 위해 이동될 수 있습니다. 선택기에는 성능 비용이 발생하므로 성능이 중요한 코드가 포함된 상황에서는 사용하지 않는 것이 좋습니다.

선택기 추가하기

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

  • 플랫폼, 애플리케이션이 실행 중인 플랫폼과 일치하는 문자열 중 하나(목록은 완전하지 않음): android, iOS, OSX, DARWIN, MAC, MACOS, LINUX, QNX, UNIX, WINDOWS. Linux의 경우, 확인할 수 있는 경우 배포판 이름(예: debian, fedora 또는 opensuse)도 입력합니다.
  • 로케일, 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

추가 선택기는 플랫폼보다 먼저 확인되므로 관리자 선택기가 설정되어 있으면 Windows에서는 +admin/background.png, 관리자 선택기가 설정되어 있지 않으면 +windows/background.png 이 선택됩니다. Linux에서는 관리자가 설정되어 있으면 +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의 편의 버전입니다. 스키마가 파일이나 qrc가 아닌 경우 filePath 가 즉시 반환됩니다. 그렇지 않으면 선택이 filePath 경로에 적용되고 QUrl 이 선택된 경로와 다른 QUrl 부분과 함께 filePath 과 동일하게 반환됩니다.

선택 알고리즘은 클래스 개요를 참조하세요.

void QFileSelector::setExtraSelectors(const QStringList &list)

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

이러한 선택기는 자동으로 선택된 선택기보다 우선권을 갖습니다.

extraSelectors()도 참조하세요 .

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