I must admit that I noticed QFile::setFileTime() the first time due to OPs question. (I never had the necessity to tweak the time stamps of any file written by my S/W.) Out of curiosity, I tried to puzzle this out.
That's what I got:
// Qt header:
#include <QtCore>
// main application
int main(int argc, char **argv)
{
auto showTimeStamps = [](const QFile &file) {
qDebug() << "File time stamps of" << file.fileName();
QFileInfo fileInfo(file);
qDebug() << "birthTime() :" << fileInfo.birthTime();
qDebug() << "lastModified():" << fileInfo.lastModified();
qDebug() << "lastAccessed():" << fileInfo.lastRead();
};
qDebug() << "Qt Version:" << QT_VERSION_STR;
{ QFile file("test.txt");
// create test file
qDebug() << "Write test.txt...";
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Failed to create test.txt!";
return 1;
}
if (file.write("Test.\n") < 0) {
qDebug() << "Failed to write to test.txt!";
return 1;
}
file.close();
qDebug() << "Done.";
// check file time stamps initially
showTimeStamps(file);
// manipulate file time stamps
const QDateTime timeStamp(QDate(1970, 5, 1), QTime(6, 0));
qDebug() << "Modify time stamp of creation of test.txt:";
if (!file.open(QIODevice::Append | QIODevice::Text)) {
qDebug() << "Failed to open test.txt!";
return 1;
}
if (!file.setFileTime(timeStamp, QFileDevice::FileBirthTime)) {
qDebug() << "Failed to modify create time!";
return 1;
}
file.close();
showTimeStamps(file);
qDebug() << "Modify time stamp of last modification of test.txt:";
if (!file.open(QIODevice::Append | QIODevice::Text)) {
qDebug() << "Failed to open test.txt!";
return 1;
}
if (!file.setFileTime(timeStamp, QFileDevice::FileModificationTime)) {
qDebug() << "Failed to modify last modified time!";
return 1;
}
file.close();
showTimeStamps(file);
qDebug() << "Modify time stamp of last access of test.txt:";
file.setFileTime(timeStamp, QFileDevice::FileAccessTime);
if (!file.open(QIODevice::Append | QIODevice::Text)) {
qDebug() << "Failed to open test.txt!";
return 1;
}
if (!file.setFileTime(timeStamp, QFileDevice::FileAccessTime)) {
qDebug() << "Failed to modify last access time!";
return 1;
}
file.close();
showTimeStamps(file);
}
// bail out to enable check in File Explorer afterwards
return 0;
// delete test file
{ qDebug() << "Delete test.txt...";
if (!QFile::remove("test.txt")) {
qDebug() << "Failed to delete test.txt!";
return 1;
}
qDebug() << "Done.";
}
}
Output:
Qt Version: 5.13.0
Write test.txt...
Done.
File time stamps of "test.txt"
birthTime() : QDateTime(2020-06-18 08:42:09.983 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastModified(): QDateTime(2020-06-18 08:42:09.984 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastAccessed(): QDateTime(2020-06-18 08:42:09.983 Mitteleuropõische Sommerzeit Qt::LocalTime)
Modify time stamp of creation of test.txt:
File time stamps of "test.txt"
birthTime() : QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastModified(): QDateTime(2020-06-18 08:42:09.984 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastAccessed(): QDateTime(2020-06-18 08:42:09.983 Mitteleuropõische Sommerzeit Qt::LocalTime)
Modify time stamp of last modification of test.txt:
File time stamps of "test.txt"
birthTime() : QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastModified(): QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastAccessed(): QDateTime(2020-06-18 08:42:09.983 Mitteleuropõische Sommerzeit Qt::LocalTime)
Modify time stamp of last access of test.txt:
File time stamps of "test.txt"
birthTime() : QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastModified(): QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
lastAccessed(): QDateTime(1970-05-01 06:00:00.000 Mitteleuropõische Sommerzeit Qt::LocalTime)
Afterwards I verified the time stamps in the Windows File Explorer:

So, I wonder about the claim of OP
Note, QFile or QFileInfo does not allow modifying these dates & times, only reading these dates & times.
I had expected that's the actual intention of QFile::setFileTime(), and it seems to work properly on my side.