Spec-Zone.ru › Qt 5.9

Класс QDir

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

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

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

Общие типы

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

Общедоступные функции

QDir(const QDir &dir)
QDir(const QString &path = QString())
QDir(const QString &path, const QString &nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), Filters filters = AllEntries)
~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, Filters filters = NoFilter, SortFlags sort = NoSort) const
QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const
QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const
bool exists(const QString &name) const
bool exists() const
QString filePath(const QString &fileName) const
Filters filter() const
bool isAbsolute() const
bool isEmpty(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(Filters filters)
void setNameFilters(const QStringList &nameFilters)
void setPath(const QString &path)
void setSorting(SortFlags sort)
SortFlags sorting() const
void swap(QDir &other)
bool operator!=(const QDir &dir) const
QDir & operator=(const QDir &dir)
QDir & operator=(QDir &&other)
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 предоставляет доступ к структурам каталогов и их содержимому.

Объект 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().

END_OF_DOCUMENT_MARKER

Статический метод 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 — это typedef для 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 — это typedef для QFlags<SortFlag>. Он хранит побитовое ИЛИ сочетание значений SortFlag.

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

QDir::QDir(const QDir &dir)

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

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

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

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

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

QDir::QDir(const QString &path, const QString &nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), 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()

Уничтожает объект 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, Filters filters = NoFilter, SortFlags sort = NoSort) const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QStringList QDir::entryList(Filters filters = NoFilter, 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().

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

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

См. также Сопоставление шаблонов с подстановкой в QRegExp, QRegExp::exactMatch(), entryList() и entryInfoList().

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

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

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

См. также Сопоставление шаблонов с подстановкой в QRegExp, QRegExp::exactMatch(), 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(Filters filters)

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

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

void QDir::setNameFilters(const QStringList &nameFilters)

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

Каждый фильтр имён — это фильтр с подстановкой символов (глоббинга), понимающий подстановки * и ?. (См. сопоставление с шаблоном QRegExp.)

Например, следующий код устанавливает три фильтра имён для 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(SortFlags sort)

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

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

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

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");

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

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

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

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

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

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.9/qdir.html

Spec-Zone.ru

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