QT——在线程的槽函数中使用QDateTime的toString函数报错

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'));
    ……
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值