Один из QIODevice
переопределенных методов open()
в QFile
имеет аргумент QFileDevice::FileHandleFlag
. Взглянув на документацию на него, есть два варианта с противоречивыми описаниями.Поддерживает ли Qt автоматическое закрытие файлов?
От QFileDevice
documentation:
QFileDevice::AutoCloseHandle
- дескриптор файла передается в открытое() должны быть закрыты близко(), поведение по умолчанию, что близко только очищает файл и приложение ответственный за закрытие дескриптора файла. При открытии файла по имени этот флаг игнорируется, так как Qt всегда владеет дескриптором файла и должен закрыть его.
QFileDevice::DontCloseHandle
- Если явным образом не закрыто, основной дескриптор файла остается открытым, когда объект QFile уничтожается.
Так что делает Qt авто закрыть файлы или нет и не установка этого параметра на самом деле изменить что-нибудь?
DontCloseHandle предназначен для тех случаев, когда приложение поставляет * ранее открытую рукоятку и покрова на Qt. В этом случае приложение (а не Qt) может захотеть сохранить пожизненное владение. Сравните это с «* При открытии файла по имени * этот флаг игнорируется, поскольку * Qt всегда владеет файлом * и должен закрыть его». – user2864740