Uno dei QIODevice
reimplementato con i metodi open()
in QFile
ha un argomento QFileDevice::FileHandleFlag
. Date un'occhiata alla documentazione per questo ci sono due opzioni con descrizioni contraddittorie.Qt auto chiude i file?
Dal QFileDevice
documentation:
QFileDevice::AutoCloseHandle
- Il file handle passato in open() dovrebbe essere chiuso da close(), il comportamento predefinito è che chiudono solo cancella il file e l'applicazione è responsabile della chiusura dell'handle del file. Quando si apre un file per nome, questo flag viene ignorato poiché Qt possiede sempre l'handle del file e deve chiuderlo.
QFileDevice::DontCloseHandle
- Se non esplicitamente chiuso, l'handle di file sottostante viene lasciato aperto quando l'oggetto QFile viene distrutto.
così fa Qt auto chiudere i file o no e fa di questa opzione in realtà cambia qualcosa?
DontCloseHandle è per quando l'applicazione fornisce un handle * precedentemente aperto * e porzioni Qt su di esso. In questo caso l'applicazione (non Qt) potrebbe voler mantenere la proprietà a vita. Confrontalo con "* Quando si apre un file per nome *, questo flag viene ignorato poiché * Qt possiede sempre l'handle del file * e deve chiuderlo." – user2864740