QTime::currentTime().msecsSinceStartOfDay()
时间: 2024-03-24 07:37:26 浏览: 143
`QTime::currentTime().msecsSinceStartOfDay()` 返回从当天 00:00:00.000 开始到当前时间的毫秒数。
它的返回值是 qint64 类型的,表示从当天 00:00:00.000 开始到当前时间的毫秒数。注意,这个值会随系统时间的变化而变化,因此不适用于需要精确时间戳的应用场景。
示例代码:
```cpp
#include <QTime>
#include <QDebug>
int main()
{
qint64 ms = QTime::currentTime().msecsSinceStartOfDay();
qDebug() << "Milliseconds since start of day:" << ms;
return 0;
}
```
输出:
```
Milliseconds since start of day: 51413283
```
表示从当天 00:00:00.000 到当前时间已经过去了 51413283 毫秒。
相关问题
QTime _Timer = QTime::currentTime().addMSecs(msec); while( QTime::currentTime() < _Timer ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
这段代码是实现了一个精确的等待时间,其中QTime::currentTime()获取当前的时间,addMSecs(msec)表示加上指定的毫秒数,得到一个新的时间点,即msec毫秒之后的时间点,将这个时间点赋值给_Timer。接下来的while循环中,不断地检查当前时间是否小于_Timer,如果小于,就用QCoreApplication::processEvents(QEventLoop::AllEvents, 100)来处理所有事件,每100毫秒处理一次,以免界面冻结。当当前时间大于等于_Timer时,就跳出循环,实现了精确等待msec毫秒的功能。
优化代码 //临时显示文件存储,只有数据显示完成后才能再存临时数据 if(filename_temp != ""){ static QTime DataUnframeTime = QTime::currentTime(); if(filename_temp.contains("temp_BCSelfTest")//如果是内部指令则继续响应。 | filename_temp.contains("collectionZD") | filename_temp.contains("collectionBD") | filename_temp.contains("temp_measure") | filename_temp.contains("temp_store") | filename_temp.contains("channelTest")) { qDebug()<<QTime::currentTime().toString("mm:ss:zzz") + "收到了内部指令,不限制mutishowperiod解析间隔"; } else if(DataUnframeTime.elapsed() < mutishowperiod)//遥控回报间隔<设置时间跳过 { qDebug()<<QTime::currentTime().toString("mm:ss:zzz") + "收到了外部指令,跳过"; return; } else//更新时间,并进行后续操作 { qDebug()<<QTime::currentTime().toString("mm:ss:zzz") + "收到了外部指令"; DataUnframeTime = QTime::currentTime(); } SaveAsBytes(filename_temp,(const char*)savedata.data(),savedata.size(),QIODevice::Truncate); emit signal_myRadarTestBack(filename_temp); qDebug()<<QTime::currentTime().toString("mm:ss:zzz") + " 数据存储完成,准备解帧显示"<<filename_temp; }
可以考虑优化代码如下:
```cpp
// 临时显示文件存储,只有数据显示完成后才能再存临时数据
if (!filename_temp.isEmpty()) {
static QTime DataUnframeTime = QTime::currentTime();
const QString& keywords = "temp_BCSelfTest|collectionZD|collectionBD|temp_measure|temp_store|channelTest";
if (filename_temp.contains(keywords)) {
qDebug() << QTime::currentTime().toString("mm:ss:zzz") + "收到了内部指令,不限制mutishowperiod解析间隔";
} else if (DataUnframeTime.elapsed() < mutishowperiod) {
// 遥控回报间隔<设置时间跳过
qDebug() << QTime::currentTime().toString("mm:ss:zzz") + "收到了外部指令,跳过";
return;
} else {
// 更新时间,并进行后续操作
qDebug() << QTime::currentTime().toString("mm:ss:zzz") + "收到了外部指令";
DataUnframeTime = QTime::currentTime();
}
SaveAsBytes(filename_temp, savedata.constData(), savedata.size(), QIODevice::Truncate);
emit signal_myRadarTestBack(filename_temp);
qDebug() << QTime::currentTime().toString("mm:ss:zzz") + " 数据存储完成,准备解帧显示" << filename_temp;
}
```
主要优化如下:
1. 选用 `isEmpty()` 代替 `!= ""`,更加清晰。
2. 将关键词字符串提取出来,避免多次重复写入。
3. 使用 `constData()` 代替 `data()`,避免非常规使用。
4. 将 `emit` 放在最后,符合代码逻辑。
5. 删除不必要的空格和无用注释,让代码更加整洁。
阅读全文