Spec-Zone.ru › Qt 5.15

Класс QDir

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

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

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

Публичные типы

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

Публичные функции

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
QFileInfoList entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
bool exists(const QString &name) const
bool exists() const
QString filePath(const QString &fileName) const
QDir::Filters filter() const
bool isAbsolute() const
bool isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const
bool isReadable() const
bool isRelative() const
bool isRoot() const
bool makeAbsolute()
bool mkdir(const QString &dirName) const
bool mkpath(const QString &dirPath) const
QStringList nameFilters() const
QString path() const
void refresh() const
QString relativeFilePath(const QString &fileName) const
bool remove(const QString &fileName)
bool removeRecursively()
bool rename(const QString &oldName, const QString &newName)
bool rmdir(const QString &dirName) const
bool rmpath(const QString &dirPath) const
void setFilter(QDir::Filters filters)
void setNameFilters(const QStringList &nameFilters)
void setPath(const QString &path)
void setSorting(QDir::SortFlags sort)
QDir::SortFlags sorting() const
void swap(QDir &other)
bool operator!=(const QDir &dir) const
bool operator==(const QDir &dir) const
QString operator[](int pos) const

Статические публичные члены

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(). Фильтры атрибутов представляют собой побитовое ИЛИ комбинацию фильтров, и они указываются при вызове 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:/, в зависимости от конфигурации системы пользователя.

END_OF_DOCUMENT_MARKER

Обработка путей и строки

Пути, содержащие элементы ".", которые ссылаются на текущую директорию в этом пути, элементы "..", которые ссылаются на родительскую директорию, и символьные ссылки могут быть сведены к канонической форме с помощью функции 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, FIFOs, сокеты и файлы устройств включены; в 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.

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

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

Эквивалентно 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.

Примечание: Если каталог является символической ссылкой на корневой каталог, эта функция возвращает true. Если вы хотите проверить это, используйте 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.

Каждый фильтр имени — это шаблон (глоббинговый) фильтр, понимающий символы * и ?. См. Сопоставление с шаблоном в 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(индекс). 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.15/qdir.html

Spec-Zone.ru

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