> Hi, just tested your example program in MSVC 2017 Qt 5.12.1 and it fails > as well. > > But a simple fix is just to make sure that the QFile file isn't open at > the same time as you write out the settings to it. > I.e. in your example program, it suffices to move that first > file.close(); up to just before the "// write out via QSettings" comment > line is, then it runs flawlessly. > > But perhaps that's not possible to keep those writes separate in time in > your "real" app that your porting?
Thanks for testing! Yes, I discovered that issue as well, and then forgot to post a follow-up here. Where I had trouble, and something I did differently in the real app vs. the minimal example, is that the file I was trying to use to write the settings to was a QTemporaryFile. I stumbled across the same fix you did in the example, but that fix never seemed to work in my real app with a QTemporaryFile. After testing, I believe that is because the QSettings object is trying to open the associated settings file with write permissions, and it isn't able to acquire them. In my example, it was because I already had opened the file with write permissions (mistakenly thinking I needed to do that before all the QSettings stuff). In my real app, I think that it must be because QTemporaryFile holds a lock on the file so it can remove it when the QTemporaryFile object goes out of scope, and therefore the QSettings object gets an access error because the file is already in use. What I'm actually trying to accomplish is far more simple: I don't actually want an INI file, I just want to get data that I've put into a QSettings object written to a QString, in the INI file format. I couldn't see any other way to do that than to write it out to a file, then read the file contents back into a QString. So if you see a simpler solution for that, I'm open to suggestions! In my real app, I've solved it by using removing the QTemporaryFile object, and just letting QSettings do its thing, writing to a file. Then when the file has been written, I read it back in to a QString, and delete the file since I have no further use for it. Sean This message has been scanned for malware by Forcepoint. www.forcepoint.com _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest