1、问题记录
在线程中的一个槽函数中,不断接收cv::Mat图片数据,并在图片右上角打上时间戳,起初运行正常,但在运行一段时间后,出现程序异常退出错误,在通过Qt的Debug调试后,发现断点在QDateTime的toString函数中,并且显示QDateTime的变量无法访问。
void func(){
……
QDateTime dateTime = QDateTime::currentDateTime();//获取系统当前的时间
QString strDateTime = dateTime.toString("yyyyMMdd hh:mm:ss:zzz");//格式化时间
……
}
2、资料查阅
查阅相关资料,资料较少,但在查阅此文章QDateTime 使用 ToString 时遇到的一些问题-CSDN社区时,偶然在回复中看到可能可行的解决方法,于是进行尝试
3、最终解决
因为这个错误不是每次都能够复现,并且复现的时间长短也不一定,所以只能进行多次测试,目前,将toString函数改为以下方法后,再次运行4~5次,每次约运行10分钟(此前运行2~7分钟左右就会出现错误),均无出现异常退出错误现象,故暂认为已解决问题。
void func{
……
QDateTime dateTime = QDateTime::currentDateTime();//获取系统当前的时间
// QString strDateTime = dateTime.toString("yyyyMMdd hh:mm:ss:zzz");//格式化时间
QString strDateTime = QString("%1%2%3 %4:%5:%6:%7").arg(dateTime.date().year())
.arg(dateTime.date().month() , 2, 10, QChar('0'))
.arg(dateTime.date().day() , 2, 10, QChar('0'))
.arg(dateTime.time().hour() , 2, 10, QChar('0'))
.arg(dateTime.time().minute(), 2, 10, QChar('0'))
.arg(dateTime.time().second(), 2, 10, QChar('0'))
.arg(dateTime.time().msec() , 3, 10, QChar('0'));
……
}