Spec-Zone.ru › Qt 5.14

Класс QDir

Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...

Заголовок: #include <QDir>
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются перевходящими.

Типы Public

Перечисление Filter { Dirs, AllDirs, Files, Drives, NoSymLinks, …, CaseSensitive }
Флаги Filters
Перечисление SortFlag { Name, Time, Size, Type, Unsorted, …, LocaleAware }
Флаги SortFlags

Функции Public

QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QDir(const QString &path = QString())
QDir(const QDir &dir)
QDir & operator=(QDir &&other)
QDir & operator=(const QDir &dir)
~QDir()
QString absoluteFilePath(const QString &fileName) const
QString absolutePath() const
QString canonicalPath() const
bool cd(const QString &dirName)
bool cdUp()
uint count() const
QString dirName() const
QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Статические члены Public

void addSearchPath(const QString &prefix, const QString &path)
QString cleanPath(const QString &path)
QDir current()
QString currentPath()
QFileInfoList drives()
QString fromNativeSeparators(const QString &pathName)
QDir home()
QString homePath()
bool isAbsolutePath(const QString &path)
bool isRelativePath(const QString &path)
QChar listSeparator()
bool match(const QString &filter, const QString &fileName)
bool match(const QStringList &filters, const QString &fileName)
QDir root()
QString rootPath()
QStringList searchPaths(const QString &prefix)
QChar separator()
bool setCurrent(const QString &path)
void setSearchPaths(const QString &prefix, const QStringList &searchPaths)
QDir temp()
QString tempPath()
QString toNativeSeparators(const QString &pathName)

Макросы

void Q_CLEANUP_RESOURCE(name)
void Q_INIT_RESOURCE(name)

Подробное описание

Класс QDir используется для манипулирования именами путей, доступа к информации о путях и файлах и для манипулирования файловой системой. Он также может использоваться для доступа к системе ресурсов Qt.

Qt использует «/» в качестве универсального разделителя каталогов так же, как «/» используется как разделитель путей в URL-адресах. Если вы всегда используете «/» в качестве разделителя каталогов, Qt будет преобразовывать ваши пути в соответствии с базовой операционной системой.

QDir может указывать на файл, используя либо относительный, либо абсолютный путь. Абсолютные пути начинаются с разделителя каталогов (при необходимости, предваряемого спецификацией диска в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего каталога.

Примеры абсолютных путей:

QDir("/home/user/Documents")
QDir("C:/Documents and Settings")

В Windows второй пример выше будет преобразован в C:\Documents and Settings при использовании для доступа к файлам.

Примеры относительных путей:

QDir("images/landscape.png")

Вы можете использовать функции isRelative() или isAbsolute(), чтобы проверить, использует ли QDir относительный или абсолютный путь к файлу. Используйте makeAbsolute(), чтобы преобразовать относительный QDir в абсолютный.

Навигация и операции с каталогами

Путь к каталогу можно получить с помощью функции path(), а новый путь установить с помощью функции setPath(). Абсолютный путь к каталогу находится с помощью вызова absolutePath().

Имя каталога находится с помощью функции dirName(). Обычно она возвращает последний элемент в абсолютном пути, который указывает на расположение каталога. Однако она также может возвращать «.» если QDir представляет текущий каталог.

QDir("Documents/Letters/Applications").dirName() // "Applications"
QDir().dirName()                                 // "."

Путь к каталогу также можно изменить с помощью функций cd() и cdUp(), которые работают как знакомые команды оболочки. Когда cd() вызывается с именем существующего каталога, объект QDir меняет каталог таким образом, что он представляет этот каталог вместо. Функция cdUp() изменяет каталог объекта QDir таким образом, что он относится к его родительскому каталогу; т.е. cd("..") эквивалентно cdUp().

Каталоги можно создавать с помощью mkdir(), переименовывать с помощью rename() и удалять с помощью rmdir().

Вы можете проверить существование каталога с заданным именем, используя exists(), а свойства каталога можно проверить с помощью isReadable(), isAbsolute(), isRelative() и isRoot().

Функция refresh() повторно считывает данные каталога с диска.

Файлы и содержимое каталогов

Каталоги содержат ряд записей, представляющих файлы, каталоги и символические ссылки. Количество записей в каталоге возвращается функцией count(). Список строк имен всех записей в каталоге можно получить с помощью entryList(). Если вам нужна информация о каждой записи, используйте entryInfoList() для получения списка объектов QFileInfo.

Пути к файлам и каталогам внутри каталога можно создать с помощью filePath() и absoluteFilePath(). Функция filePath() возвращает путь к указанному файлу или каталогу относительно пути объекта QDir; absoluteFilePath() возвращает абсолютный путь к указанному файлу или каталогу. Ни одна из этих функций не проверяет существование файлов или каталогов; они только строят пути.

QDir directory("Documents/Letters");
QString path = directory.filePath("contents.txt");
QString absolutePath = directory.absoluteFilePath("contents.txt");

Файлы можно удалить, используя функцию remove(). Каталоги не могут быть удалены так же, как файлы; используйте rmdir() для их удаления.

Можно уменьшить количество записей, возвращаемых entryList() и entryInfoList(), применив фильтры к объекту QDir. Вы можете применить фильтр имен для указания шаблона с подстановочными знаками, которым должны соответствовать имена файлов, фильтр атрибутов, который выбирает свойства записей и может различать файлы и каталоги, и порядок сортировки.

Фильтры имен представляют собой списки строк, которые передаются в setNameFilters(). Фильтры атрибутов состоят из побитовой ИЛИ комбинации Filters, и они задаются при вызове setFilter(). Порядок сортировки задается с помощью setSorting() с помощью побитовой ИЛИ комбинации SortFlags.

Вы можете проверить, соответствует ли имя файла фильтру, используя функцию match().

Флаги фильтра и порядка сортировки также могут быть заданы при вызове entryList() и entryInfoList() для переопределения ранее заданного поведения.

Текущий каталог и другие специальные пути

Доступ к некоторым общим каталогам обеспечивается рядом статических функций, которые возвращают объекты QDir. Также существуют соответствующие функции для этих функций, которые возвращают строки:

QDir QString Возвращаемое значение
current() currentPath() Рабочий каталог приложения
home() homePath() Домашний каталог пользователя
root() rootPath() Корневой каталог
temp() tempPath() Временный каталог системы

Статическую функцию setCurrent() также можно использовать для установки рабочего каталога приложения.

Если вам нужно найти каталог, содержащий исполняемый файл приложения, см. QCoreApplication::applicationDirPath().

Статическая функция drives() предоставляет список корневых каталогов для каждого устройства, содержащего файловую систему. В системах Unix это возвращает список, содержащий один корневой каталог «/»; в Windows список обычно содержит C:/, и, возможно, другие буквы дисков, такие как D:/, в зависимости от конфигурации системы пользователя.

Манипулирование путями и строками

Пути, содержащие элементы ".", которые ссылаются на текущую директорию в данном месте пути, элементы "..", которые ссылаются на родительскую директорию, и символьные ссылки можно привести к канонической форме с помощью функции canonicalPath().

Пути также можно упростить, используя функцию cleanPath(), чтобы удалить избыточные элементы "/" и "..".

Иногда необходимо отобразить путь в представлении по умолчанию для платформы пользователя. Статическая функция toNativeSeparators() возвращает копию указанного пути, в котором каждый разделитель директории заменяется соответствующим разделителем для базовой операционной системы.

Примеры

Проверка существования директории:

QDir dir("example");
if (!dir.exists())
    qWarning("Cannot find the example directory");

(Мы также можем использовать статическую удобную функцию QFile::exists().)

Обход директорий и чтение файла:

QDir dir = QDir::root();                 // "/"
if (!dir.cd("tmp")) {                    // "/tmp"
    qWarning("Cannot find the \"/tmp\" directory");
} else {
    QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
    if (!file.open(QIODevice::ReadWrite))
        qWarning("Cannot create the file %s", file.name());
}

Программа, которая выводит все файлы в текущей директории (исключая символьные ссылки), отсортированные по размеру, по возрастанию:

#include <QDir>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QDir dir;
    dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    dir.setSorting(QDir::Size | QDir::Reversed);

    QFileInfoList list = dir.entryInfoList();
    std::cout << "     Bytes Filename" << std::endl;
    for (int i = 0; i < list.size(); ++i) {
        QFileInfo fileInfo = list.at(i);
        std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                .arg(fileInfo.fileName()));
        std::cout << std::endl;
    }
    return 0;
}

См. также QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath() и Пример поиска файлов.

Документация по типам членов

enum QDir::Filterflags QDir::Filters

Этот перечисление описывает доступные параметры фильтрации для QDir; например, для entryList() и entryInfoList(). Значение фильтра задается объединением значений из следующего списка с помощью побитового оператора ИЛИ:

Постоянная Значение Описание
QDir::Dirs 0x001 Список директорий, соответствующих фильтрам.
QDir::AllDirs 0x400 Список всех директорий; т.е. фильтры не применяются к именам директорий.
QDir::Files 0x002 Список файлов.
QDir::Drives 0x004 Список дисковых дисков (игнорируется в Unix).
QDir::NoSymLinks 0x008 Не отображать символьные ссылки (игнорируется операционными системами, которые не поддерживают символьные ссылки).
QDir::NoDotAndDotDot NoDot | NoDotDot Не отображать специальные записи "." и "..".
QDir::NoDot 0x2000 Не отображать специальную запись ".".
QDir::NoDotDot 0x4000 Не отображать специальную запись "..".
QDir::AllEntries Dirs | Files | Drives Список директорий, файлов, дисков и симлинков (это не отображает разорванные симлинки, если не указано System).
QDir::Readable 0x010 Список файлов, к которым приложение имеет доступ для чтения. Значение Readable необходимо объединять с Dirs или Files.
QDir::Writable 0x020 Список файлов, к которым приложение имеет доступ для записи. Значение Writable необходимо объединять с Dirs или Files.
QDir::Executable 0x040 Список файлов, к которым приложение имеет доступ для выполнения. Значение Executable необходимо объединять с Dirs или Files.
QDir::Modified 0x080 Список файлов, которые были изменены (игнорируется в Unix).
QDir::Hidden 0x100 Список скрытых файлов (в Unix, файлы, начинающиеся с ".").
QDir::System 0x200 Список системных файлов (в Unix, включаются FIFO, сокеты и файлы устройств; в Windows, .lnk файлы включаются)
QDir::CaseSensitive 0x800 Фильтр должен быть чувствительным к регистру.

Функции, которые используют значения перечисления Filter для фильтрации списков файлов и директорий, будут включать символьные ссылки на файлы и директории, если вы не установите значение NoSymLinks.

У QDir, созданного по умолчанию, не будут отфильтрованы файлы на основе их разрешений, поэтому entryList() и entryInfoList() будут возвращать все файлы, которые являются читаемыми, записываемыми, исполняемыми или любой комбинацией из трёх.

Например, установка флагов Readable, Writable, и Files позволяет отобразить все файлы, к которым приложение имеет доступ для чтения, записи или обоих. Если в этой комбинации также включены флаги Dirs и Drives, то можно отобразить все диски, директории, все файлы, к которым приложение имеет доступ для чтения, записи или выполнения, а также симлинки на такие файлы/директории.

Для получения разрешений на директорию используйте функцию entryInfoList() для получения связанных объектов QFileInfo, а затем используйте QFileInfo::permissons() для получения разрешений и владельца для каждого файла.

Тип Filters — это псевдоним для QFlags<Filter>. Он хранит комбинацию значений Filter по оператору ИЛИ.

enum QDir::SortFlagflags QDir::SortFlags

Этот перечисление описывает доступные параметры сортировки для QDir, например, для entryList() и entryInfoList(). Значение сортировки задаётся объединением значений из следующего списка с помощью оператора ИЛИ:

Постоянная Значение Описание
QDir::Name 0x00 Сортировка по имени.
QDir::Time 0x01 Сортировка по времени (времени изменения).
QDir::Size 0x02 Сортировка по размеру файла.
QDir::Type 0x80 Сортировка по типу файла (расширению).
QDir::Unsorted 0x03 Не сортировать.
QDir::NoSort -1 По умолчанию не сортируется.
QDir::DirsFirst 0x04 Поместить директории вначале, затем файлы.
QDir::DirsLast 0x20 Поместить файлы вначале, затем директории.
QDir::Reversed 0x08 Перевернуть порядок сортировки.
QDir::IgnoreCase 0x10 Сортировка без учёта регистра.
QDir::LocaleAware 0x40 Сортировать элементы с учётом локальных настроек.

Вы можете указать только один из первых четырёх.

Если вы укажете как DirsFirst, так и Reversed, директории всё равно будут стоять вначале, но в обратном порядке; файлы будут перечислены после директорий, также в обратном порядке.

Тип SortFlags — это псевдоним для QFlags<SortFlag>. Он хранит комбинацию значений SortFlag по оператору ИЛИ.

Документация по функциям-членам

QDir::QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

Создаёт QDir с путём path, фильтрующим свои элементы по имени с помощью nameFilter и по атрибутам с помощью filters. Также сортирует имена с помощью sort.

По умолчанию nameFilter — это пустая строка, что ничего не исключает; по умолчанию filters — AllEntries, что также означает, что ничего не исключается. По умолчанию sort — Name | IgnoreCase, т.е. сортировка по имени без учёта регистра.

Если path — это пустая строка, QDir использует "." (текущая директория). Если nameFilter — это пустая строка, QDir использует фильтр имени "*" (все файлы).

Обратите внимание, что path не обязательно должен существовать.

См. также exists(), setPath(), setNameFilters(), setFilter() и setSorting().

QDir::QDir(const QString &path = QString())

Создаёт QDir, указывающий на директорию path. Если путь пустой, используется рабочая директория программы (".").

См. также currentPath().

QDir::QDir(const QDir &dir)

Создаёт объект QDir, являющийся копией объекта QDir для директории dir.

См. также operator=().

QDir &QDir::operator=(QDir &&other)

Перемещает other в этот экземпляр QDir.

Эта функция была введена в Qt 5.2.

END_OF_DOCUMENT_MARKER

QDir &QDir::operator=(const QDir &dir)

Создаёт копию объекта dir и присваивает её текущему объекту QDir.

QDir::~QDir()

Удаляет объект QDir и освобождает его ресурсы. Это не влияет на подлежащий каталог в файловой системе.

QString QDir::absoluteFilePath(const QString &fileName) const

Возвращает абсолютный путь к файлу в каталоге. Не проверяет, действительно ли файл существует в каталоге; но см. exists(). Избыточные последовательные разделители или каталоги "." и ".." в fileName не удаляются (см. cleanPath()).

См. также relativeFilePath(), filePath() и canonicalPath().

QString QDir::absolutePath() const

Возвращает абсолютный путь (путь, начинающийся с "/" или с указания диска), который может содержать символические ссылки, но никогда не содержит избыточные ".", ".." или несколько разделителей.

См. также setPath(), canonicalPath(), exists(), cleanPath(), dirName() и absoluteFilePath().

[static] void QDir::addSearchPath(const QString &prefix, const QString &path)

Добавляет path в путь поиска для prefix.

Эта функция была добавлена в Qt 4.3.

См. также setSearchPaths().

QString QDir::canonicalPath() const

Возвращает канонический путь, т.е. путь без символических ссылок или избыточных элементов "." или "..".

В системах, не поддерживающих символические ссылки, эта функция всегда возвращает ту же строку, что и absolutePath(). Если канонический путь не существует (обычно из-за висящих символических ссылок), canonicalPath() возвращает пустую строку.

Пример:

QString bin = "/local/bin";         // where /local/bin is a symlink to /usr/bin
QDir binDir(bin);
QString canonicalBin = binDir.canonicalPath();
// canonicalBin now equals "/usr/bin"

QString ls = "/local/bin/ls";       // where ls is the executable "ls"
QDir lsDir(ls);
QString canonicalLs = lsDir.canonicalPath();
// canonicalLS now equals "/usr/bin/ls".

См. также path(), absolutePath(), exists(), cleanPath(), dirName() и absoluteFilePath().

bool QDir::cd(const QString &dirName)

Изменяет каталог объекта QDir на dirName.

Возвращает true если новый каталог существует; в противном случае возвращает false. Обратите внимание, что логическая операция cd() не выполняется, если новый каталог не существует.

Вызов cd("..") эквивалентен вызову cdUp().

См. также cdUp(), isReadable(), exists() и path().

bool QDir::cdUp()

Изменяет каталог, переместившись на один уровень вверх от текущего каталога объекта QDir.

Возвращает true если новый каталог существует; в противном случае возвращает false. Обратите внимание, что логическая операция cdUp() не выполняется, если новый каталог не существует.

См. также cd(), isReadable(), exists() и path().

[static] QString QDir::cleanPath(const QString &path)

Возвращает path с нормализованными разделителями каталогов (т.е. платформно-ориентированные разделители преобразуются в "/") и удаленными избыточными, и разрешёнными "." и "..".

Символические ссылки сохраняются. Эта функция не возвращает канонический путь, а скорее самую простую версию входных данных. Например, "./local" становится "local", "local/../bin" становится "bin" и "/local/usr/../bin" становится "/local/bin".

См. также absolutePath() и canonicalPath().

uint QDir::count() const

Возвращает общее количество каталогов и файлов в каталоге.

Эквивалентно entryList().count().

См. также operator[]() и entryList().

[static] QDir QDir::current()

Возвращает текущий каталог приложения.

Каталог создаётся с использованием абсолютного пути текущего каталога, гарантируя, что его path() будет таким же, как его absolutePath().

См. также currentPath(), setCurrent(), home(), root() и temp().

[static] QString QDir::currentPath()

Возвращает абсолютный путь текущего каталога приложения. Текущий каталог — это последний каталог, заданный с помощью QDir::setCurrent(), или, если это никогда не вызывалось, каталог, в котором данное приложение было запущено родительским процессом.

См. также current(), setCurrent(), homePath(), rootPath(), tempPath() и QCoreApplication::applicationDirPath().

QString QDir::dirName() const

Возвращает имя каталога; это не то же самое, что и путь, например, каталог с именем "mail" может иметь путь "/var/spool/mail". Если у каталога нет имени (например, это корневой каталог), возвращается пустая строка.

Не проверяется, существует ли каталог с этим именем; но см. exists().

См. также path(), filePath(), absolutePath() и absoluteFilePath().

[static] QFileInfoList QDir::drives()

Возвращает список корневых каталогов в этой системе.

В Windows это возвращает список объектов QFileInfo, содержащих "C:/", "D:/" и т.д. В других операционных системах возвращается список, содержащий только один корневой каталог (т.е. "/").

См. также root() и rootPath().

QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных в соответствии с фильтрами имён и атрибутов, установленных ранее с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, установленными с помощью setSorting().

Фильтр имён, фильтр атрибутов файла и спецификация сортировки могут быть переопределены с помощью аргументов nameFilters, filters и sort.

Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует спецификации.

См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().

QFileInfoList QDir::entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Это перегруженная функция.

Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных в соответствии с фильтрами имён и атрибутов, установленных ранее с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, установленными с помощью setSorting().

Фильтр атрибутов и спецификация сортировки могут быть переопределены с помощью аргументов filters и sort.

Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует спецификации.

См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().

QStringList QDir::entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Возвращает список имён всех файлов и каталогов в каталоге, отсортированных в соответствии с фильтрами имён и атрибутов, установленных ранее с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, установленными с помощью setSorting().

Фильтр имён, фильтр атрибутов файла и спецификация сортировки могут быть переопределены с помощью аргументов nameFilters, filters и sort.

Возвращает пустой список, если директория недоступна для чтения, не существует или ничего не соответствует заданным параметрам.

См. также entryInfoList(), setNameFilters(), setSorting(), и setFilter().

QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Это перегруженный метод.

Возвращает список имён всех файлов и каталогов в директории, отсортированный в соответствии с фильтрами имен и атрибутов, установленных ранее с помощью setNameFilters() и setFilter(), и отсортированный в соответствии со флагами, установленными с помощью setSorting().

Фильтры атрибутов и сортировки можно переопределить, используя аргументы filters и sort.

Возвращает пустой список, если директория недоступна для чтения, не существует или ничего не соответствует заданным параметрам.

Примечание: Чтобы перечислить символические ссылки, указывающие на несуществующие файлы, необходимо передать System в фильтр.

См. также entryInfoList(), setNameFilters(), setSorting(), и setFilter().

bool QDir::exists(const QString &name) const

Возвращает true если файл с именем name существует; в противном случае возвращает false.

Если name не содержит абсолютного пути к файлу, имя файла предполагается относительным к текущей директории, поэтому эта функция обычно используется для проверки наличия файлов внутри директории.

См. также QFileInfo::exists() и QFile::exists().

bool QDir::exists() const

Это перегруженный метод.

Возвращает true если директория существует; в противном случае возвращает false. (Если найден файл с тем же именем, эта функция вернёт false).

Перегрузка этой функции, принимающая аргумент, используется для проверки наличия файлов и каталогов внутри директории.

См. также QFileInfo::exists() и QFile::exists().

QString QDir::filePath(const QString &fileName) const

Возвращает имя пути к файлу в директории. Не проверяет, существует ли файл в директории; но см. exists(). Если QDir является относительным, возвращаемое имя пути также будет относительным. Избыточные двойные разделители или директории "." и ".." в fileName не удаляются (см. cleanPath()).

См. также dirName(), absoluteFilePath(), isRelative(), и canonicalPath().

QDir::Filters QDir::filter() const

Возвращает значение, установленное методом setFilter()

См. также setFilter().

[static] QString QDir::fromNativeSeparators(const QString &pathName)

Возвращает pathName, используя '/' в качестве разделителя файлов. Например, в Windows fromNativeSeparators("c:\\winnt\\system32") возвращает "c:/winnt/system32".

Возвращаемая строка может быть такой же, как аргумент, на некоторых операционных системах, например, на Unix.

Эта функция была добавлена в Qt 4.2.

См. также toNativeSeparators() и separator().

[static] QDir QDir::home()

Возвращает домашнюю директорию пользователя.

Каталог создаётся с помощью абсолютного пути к домашней директории, гарантируя, что его path() будет таким же, как его absolutePath().

См. homePath() для получения подробностей.

См. также drives(), current(), root(), и temp().

[static] QString QDir::homePath()

Возвращает абсолютный путь к домашней директории пользователя.

В Windows эта функция вернёт директорию профиля текущего пользователя. Обычно это:

C:/Documents and Settings/Username

Используйте функцию toNativeSeparators() для преобразования разделителей в соответствующие разделители для подлежащей операционной системы.

Если директория профиля текущего пользователя не существует или не может быть получена, будут проверены следующие альтернативы (в указанном порядке), пока не будет найден существующий и доступный путь:

  1. Путь, указанный переменной среды USERPROFILE.
  2. Путь, образованный конкатенацией переменных среды HOMEDRIVE и HOMEPATH.
  3. Путь, указанный переменной среды HOME.
  4. Путь, возвращаемый функцией rootPath() (которая использует переменную среды SystemDrive)
  5. Директория C:/.

На операционных системах, отличных от Windows, используется переменная среды HOME, если она существует, в противном случае используется путь, возвращаемый функцией rootPath().

См. также home(), currentPath(), rootPath(), и tempPath().

bool QDir::isAbsolute() const

Возвращает true если путь директории является абсолютным; в противном случае возвращает false. См. isAbsolutePath().

См. также isRelative(), makeAbsolute(), и cleanPath().

[static] bool QDir::isAbsolutePath(const QString &path)

Возвращает true если path является абсолютным; возвращает false если оно относительное.

См. также isAbsolute(), isRelativePath(), makeAbsolute(), и cleanPath().

bool QDir::isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const

Возвращает, пуста ли директория.

Эквивалентно count() == 0 с фильтрами QDir::AllEntries | QDir::NoDotAndDotDot, но быстрее, так как просто проверяет, содержит ли директория хотя бы одну запись.

Примечание: Если не установить флаги filters для включения QDir::NoDotAndDotDot, никакая директория не считается пустой.

Эта функция была добавлена в Qt 5.9.

См. также count(), entryList(), и setFilter().

bool QDir::isReadable() const

Возвращает true если директория доступна для чтения и мы можем открыть файлы по имени; в противном случае возвращает false.

Предупреждение: Ложное значение из этой функции не гарантирует, что файлы в директории недоступны.

См. также QFileInfo::isReadable().

bool QDir::isRelative() const

Возвращает true если путь директории относительный; в противном случае возвращает false. (В Unix путь является относительным, если он не начинается с "/").

См. также makeAbsolute(), isAbsolute(), isAbsolutePath(), и cleanPath().

[static] bool QDir::isRelativePath(const QString &path)

Возвращает true если path относительный; возвращает false если абсолютный.

См. также isRelative(), isAbsolutePath(), и makeAbsolute().

bool QDir::isRoot() const

Возвращает true если директория является корневой директорией; в противном случае возвращает false.

Примечание: Если директория является символической ссылкой на корневую директорию, эта функция возвращает false. Если вы хотите проверить это, используйте canonicalPath(), например:

QDir dir("/tmp/root_link");
dir = dir.canonicalPath();
if (dir.isRoot())
    qWarning("It is a root link");

См. также root() и rootPath().

[static] QChar QDir::listSeparator()

Возвращает разделитель списка путей по умолчанию: ':' в Unix и ';' в Windows.

Эта функция была добавлена в Qt 5.6.

См. также separator().

bool QDir::makeAbsolute()

Преобразует путь директории в абсолютный путь. Если он уже абсолютный, ничего не происходит. Возвращает true если преобразование выполнено успешно; в противном случае возвращает false.

См. также isAbsolute(), isAbsolutePath(), isRelative(), и cleanPath().

[static] bool QDir::match(const QString &filter, const QString &fileName)

Возвращает true если fileName соответствует маске (glob) filter; в противном случае возвращает false. filter может содержать несколько шаблонов, разделенных пробелами или точками с запятой. Сопоставление регистронезависимое.

См. также Сопоставление с маской QRegularExpression, entryList() и entryInfoList().

[static] bool QDir::match(const QStringList &filters, const QString &fileName)

Это перегруженный метод.

Возвращает true если fileName соответствует любому из шаблонов (glob) в списке filters; в противном случае возвращает false. Сопоставление регистронезависимое.

См. также Сопоставление с маской QRegularExpression, entryList() и entryInfoList().

bool QDir::mkdir(const QString &dirName) const

Создаёт подкаталог с именем dirName.

Возвращает true при успехе; в противном случае возвращает false.

Если каталог уже существует, будет возвращено false.

См. также rmdir().

bool QDir::mkpath(const QString &dirPath) const

Создаёт путь к каталогу dirPath.

Функция создаст все необходимые родительские каталоги для создания каталога.

Возвращает true при успехе; в противном случае возвращает false.

Если путь уже существует, будет возвращено true.

См. также rmpath().

QStringList QDir::nameFilters() const

Возвращает список строк, заданный методом setNameFilters().

См. также setNameFilters().

QString QDir::path() const

Возвращает путь. Он может содержать символические ссылки, но никогда не содержит избыточных ".", "..", или несколько разделителей.

Возвращаемый путь может быть абсолютным или относительным (см. setPath()).

См. также setPath(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), toNativeSeparators() и makeAbsolute().

void QDir::refresh() const

Обновляет информацию о каталоге.

QString QDir::relativeFilePath(const QString &fileName) const

Возвращает путь к fileName, относительный к каталогу.

QDir dir("/home/bob");
QString s;

s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"

См. также absoluteFilePath(), filePath() и canonicalPath().

bool QDir::remove(const QString &fileName)

Удаляет файл fileName.

Возвращает true если файл удален успешно; в противном случае возвращает false.

bool QDir::removeRecursively()

Удаляет каталог, включая все его содержимое.

Возвращает true если успешно; в противном случае false.

Если файл или каталог не может быть удалён, removeRecursively() продолжает и пытается удалить как можно больше файлов и подкаталогов, а затем возвращает false.

Если каталог уже удалён, метод возвращает true (ожидаемый результат уже достигнут).

Примечание: эта функция предназначена для удаления небольшого внутреннего каталога приложения (например, временного каталога), но не каталогов, видимых пользователю. Для операций с видимыми пользователем каталогами рекомендуется более точно сообщать пользователю об ошибках, предлагать решения в случае ошибок, отображать прогресс во время удаления, так как это может занять несколько минут и т. д.

Эта функция была добавлена в Qt 5.0.

bool QDir::rename(const QString &oldName, const QString &newName)

Переименовывает файл или каталог из oldName в newName и возвращает true при успехе; в противном случае возвращает false.

В большинстве файловых систем rename() терпит неудачу только если oldName не существует или если файл с новым именем уже существует. Однако есть и другие причины, по которым rename() может завершиться неудачей. Например, по крайней мере в одной файловой системе rename() терпит неудачу, если newName указывает на открытый файл.

Если oldName — это файл (не каталог), который не может быть переименован сразу, Qt попытается скопировать oldName в newName и удалить oldName.

См. также QFile::rename().

bool QDir::rmdir(const QString &dirName) const

Удаляет каталог, указанный dirName.

Каталог должен быть пустым для успешного выполнения rmdir().

Возвращает true при успехе; в противном случае возвращает false.

См. также mkdir().

bool QDir::rmpath(const QString &dirPath) const

Удаляет путь к каталогу dirPath.

Функция удалит все родительские каталоги в dirPath, при условии, что они пусты. Это противоположно mkpath(dirPath).

Возвращает true при успехе; в противном случае возвращает false.

См. также mkpath().

[static] QDir QDir::root()

Возвращает корневой каталог.

Каталог создаётся с использованием абсолютного пути к корневому каталогу, гарантируя, что его path() будет таким же, как его absolutePath().

См. rootPath() для подробностей.

См. также drives(), current(), home() и temp().

[static] QString QDir::rootPath()

Возвращает абсолютный путь к корневому каталогу.

Для Unix-систем это возвращает "/". Для файловых систем Windows это обычно возвращает "c:/".

См. также root(), drives(), currentPath(), homePath() и tempPath().

[static] QStringList QDir::searchPaths(const QString &prefix)

Возвращает пути поиска для prefix.

Эта функция была добавлена в Qt 4.3.

См. также setSearchPaths() и addSearchPath().

[static] QChar QDir::separator()

Возвращает разделитель каталогов по умолчанию: "/" в Unix и "\" в Windows.

Вам не нужно использовать эту функцию для построения путей к файлам. Если вы всегда используете "/", Qt будет переводить ваши пути, чтобы они соответствовали используемой операционной системе. Если вы хотите отобразить пути пользователю, используя разделитель операционной системы, используйте toNativeSeparators().

См. также listSeparator().

[static] bool QDir::setCurrent(const QString &path)

Устанавливает текущий рабочий каталог приложения на path. Возвращает true если каталог был успешно изменён; в противном случае возвращает false.

См. также current(), currentPath(), home(), root() и temp().

void QDir::setFilter(QDir::Filters filters)

Устанавливает фильтр, используемый методами entryList() и entryInfoList() на filters. Фильтр используется для указания типа файлов, которые должны быть возвращены методами entryList() и entryInfoList(). См. QDir::Filter.

См. также filter() и setNameFilters().

void QDir::setNameFilters(const QStringList &nameFilters)

Устанавливает фильтры имён, используемые методами entryList() и entryInfoList() на список фильтров, заданных nameFilters.

Каждый фильтр имени — это маска (globbing) фильтра, понимающая * и ? маски. См. Сопоставление с маской QRegularExpression.

Например, следующий код устанавливает три фильтра имён для QDir, чтобы обеспечить, что будут перечислены только файлы с расширениями, обычно используемыми для файлов исходного кода C++:

    QStringList filters;
    filters << "*.cpp" << "*.cxx" << "*.cc";
    dir.setNameFilters(filters);

См. также nameFilters() и setFilter().

void QDir::setPath(const QString &path)

Устанавливает путь к каталогу в path. Путь очищается от избыточных ".", ".." и нескольких разделителей. Не проверяется, существует ли каталог с этим путем; но вы можете проверить это самостоятельно, используя exists().

Путь может быть абсолютным или относительным. Абсолютные пути начинаются с разделителя каталога "/" (при необходимости, предваряемого спецификацией диска в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего каталога. Пример абсолютного пути — строка "/tmp/quartz", относительный путь может выглядеть как "src/fatlib".

См. также path(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), isRelative() и makeAbsolute().

[static] void QDir::setSearchPaths(const QString &prefix, const QStringList &searchPaths)

Устанавливает или заменяет пути поиска Qt для имён файлов с префиксом prefix на searchPaths.

Для указания префикса имени файла добавьте префикс, за которым следует одиночная двоеточие (например, "images:undo.png", "xmldocs:books.xml"). prefix может содержать только буквы или цифры (например, он не может содержать двоеточие или косую черту).

Qt использует этот путь поиска для поиска файлов с известным префиксом. Элементы пути поиска проверяются в порядке, начиная с первого элемента.

QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images"));
QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments"));
...
QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images"
QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path

Префикс имени файла должен иметь длину не менее 2 символов, чтобы избежать конфликтов с буквами дисков Windows.

Пути поиска могут содержать пути к Системе ресурсов Qt.

Эта функция была введена в Qt 4.3.

См. также searchPaths().

void QDir::setSorting(QDir::SortFlags sort)

Устанавливает порядок сортировки, используемый entryList() и entryInfoList().

sort задаётся путём побитового объединения значений из перечисления QDir::SortFlag.

См. также sorting() и SortFlag.

QDir::SortFlags QDir::sorting() const

Возвращает значение, установленное setSorting()

См. также setSorting() и SortFlag.

void QDir::swap(QDir &other)

Меняет местами этот экземпляр QDir с other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была введена в Qt 5.0.

[static] QDir QDir::temp()

Возвращает временный каталог системы.

Каталог конструируется с использованием абсолютного канонического пути временного каталога, гарантируя, что его path() будет таким же, как и его absolutePath().

См. tempPath() для получения подробностей.

См. также drives(), current(), home() и root().

[static] QString QDir::tempPath()

Возвращает абсолютный канонический путь временного каталога системы.

В системах Unix/Linux это путь в переменной окружения TMPDIR или /tmp, если TMPDIR не определено. В Windows это обычно путь в переменной окружения TEMP или TMP. Возвращаемый этим методом путь не заканчивается разделителем каталога, если только это не корневой каталог (диска).

См. также temp(), currentPath(), homePath() и rootPath().

[static] QString QDir::toNativeSeparators(const QString &pathName)

Возвращает pathName с разделителями '/' преобразованными в разделители, соответствующие основной операционной системе.

В Windows toNativeSeparators("c:/winnt/system32") возвращает "c:\winnt\system32".

Возвращаемая строка может быть такой же, как аргумент, в некоторых операционных системах, например, в Unix.

Эта функция была введена в Qt 4.2.

См. также fromNativeSeparators() и separator().

bool QDir::operator!=(const QDir &dir) const

Возвращает true если у каталога dir и этого каталога разные пути или разные настройки сортировки или фильтрации; в противном случае возвращает false.

Пример:

// The current directory is "/usr/local"
QDir d1("/usr/local/bin");
d1.setFilter(QDir::Executable);
QDir d2("bin");
if (d1 != d2)
    qDebug("They differ");

bool QDir::operator==(const QDir &dir) const

Возвращает true если у каталога dir и этого каталога одинаковый путь и их настройки сортировки и фильтрации одинаковы; в противном случае возвращает false.

Пример:

// The current directory is "/usr/local"
QDir d1("/usr/local/bin");
QDir d2("bin");
if (d1 == d2)
    qDebug("They're the same");

QString QDir::operator[](int pos) const

Возвращает имя файла в позиции pos в списке имён файлов. Эквивалентно entryList().at(index). pos должен быть допустимой позицией индекса в списке (т. е., 0 <= pos < count()).

См. также count() и entryList().

Документация макроса

void Q_CLEANUP_RESOURCE(name)

Выгружает ресурсы, указанные в файле .qrc с базовым именем name.

Обычно ресурсы Qt выгружаются автоматически при завершении приложения, но если ресурсы расположены в плагине, который выгружается, вызовите Q_CLEANUP_RESOURCE(), чтобы принудительно удалить ваши ресурсы.

Примечание: Этот макрос не может быть использован в пространстве имён. Пожалуйста, обратитесь к документации Q_INIT_RESOURCE для обходного решения.

Пример:

Q_CLEANUP_RESOURCE(myapp);

Эта функция была введена в Qt 4.1.

См. также Q_INIT_RESOURCE() и Систему ресурсов Qt.

void Q_INIT_RESOURCE(name)

Инициализирует ресурсы, указанные в файле .qrc с заданным базовым именем name. Обычно, когда ресурсы строятся как часть приложения, ресурсы загружаются автоматически при запуске. Макрос Q_INIT_RESOURCE() необходим на некоторых платформах для ресурсов, хранящихся в статической библиотеке.

Например, если ресурсы вашего приложения перечислены в файле с именем myapp.qrc, вы можете убедиться, что ресурсы инициализированы при запуске, добавив эту строку в вашу функцию main():

Q_INIT_RESOURCE(myapp);

Если имя файла содержит символы, которые не могут быть частью допустимого имени функции C++ (например, '-'), их необходимо заменить символом нижнего подчеркивания ('_').

Примечание: Этот макрос не может быть использован в пространстве имён. Его следует вызывать из main(). Если это невозможно, можно использовать следующее обходное решение для инициализации ресурса myapp из функции MyNamespace::myFunction:

inline void initMyResource() { Q_INIT_RESOURCE(myapp); }

namespace MyNamespace
{
    ...

    void myFunction()
    {
        initMyResource();
    }
}

См. также Q_CLEANUP_RESOURCE() и Систему ресурсов Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qdir.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API