本人在用vs+qt编写日志功能,其中 FindID()为返回目前案例编号
```c++
void QtWidgetsApplication3::UPfile()
{
file.setFileName(path);
if(file.open(QIODevice::Append | QIODevice::Text))
qDebug() << "UPfile被执行" << endl;
QDateTime dateTime = QDateTime::currentDateTime();//获取系统当前的时间
ID = FindID().toInt()+1;
QString str = QString::number(ID)+ ":" + dateTime.toString("yyyy-MM-dd hh-mm-ss") + ";";//格式化时间
qDebug() << "str:"<<str;//正常
if (ID > 30)
{
QMessageBox::information
(this, tr("日志超出储存范围"), tr("日志仅支持记录30条"));
file.close();
file.open(QIODevice::ReadWrite);
file.write("编号:年-月-日-时-分-秒-WB-PPP-RBC-PRP;");
file.close();
file.open(QIODevice::Append);
ID = 1;
str = QString::number(ID) + ":" + dateTime.toString("yyyy-MM-dd hh-mm-ss") + ";";//格式化时间
}
else
{
QMessageBox::information
(this, tr("储存日志"), tr("储存日志成功"));
}
QTextStream stream(&file);
stream << str;
qDebug() << "添加日志";
file.close();
}
调试输出
```c++
UPfile被执行
QFile::setFileName: File (D:/Qt/QtProgram/cprp/QtWidgetsApplication3 - 2/QtWidgetsApplication3/������־.txt) is already opened
lineStr: "缂栧彿锛氬勾-鏈鏃鏃鍒绉WB-PPP-RBC-PRP;" 1
lineStr: "30锛" 2
lineStr: "1:2023-02-22 15-00-10;" 3
":" 0.1
str: "2:2023-02-22 15-00-16;"
添加日志
QIODevice::write (QFile, "D:\Qt\QtProgram\cprp\QtWidgetsApplication3 - 2\QtWidgetsApplication3\病例日志.txt"): ReadOnly device
锛其实是冒号
运行前txt内容为
编号:年-月-日-时-分-秒-WB-PPP-RBC-PRP;
30:
运行后txt内容为
编号:年-月-日-时-分-秒-WB-PPP-RBC-PRP;
30:
1:2023-02-22 15-00-10;
问题在于写入操作只有ID超出设定范围时生效,且也不是我设想的重新编写,而是在文档后面追加。
去掉if体的话连超出设定都不会生效,一天了都没搞明白为什么,求指点迷津,ORL