1、Qt获取当前时间日期或时间戳QDateTime
获取系统时间 QDateTime timeCur = QDateTime::currentDateTime();//获取系统现在的时间
设置显示格式 QString timeStr = timeCur.toString("yyyy-MM-dd hh:mm:ss ddd"); //秒
设置显示格式 QString timeStr = timeCur.toString("yyyy-MM-dd hh:mm:ss.zzz"); //毫秒
获取时间戳(毫秒) QString timestamp = QString::number(QDateTime::currentMSecsSinceEpoch())
获取时间戳(秒) int timeT = time.toTime_t(); //将当前时间转为时间戳
2、QString与char*的相互转换
2.1 QString 转换为 char *
将 QString 转 char *,需要用到 QByteArray 类,QByteArray 类的说明详见 Qt 帮助文档。
因为 char * 最后都有一个'\0'
作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'
。
方法如下:
QString str;
char* ch;
QByteArray ba = str.toLatin1(); // must
ch=ba.data();
这样就完成了 QString 向 char * 的转化。经测试程序运行时不会出现 bug。注意第3行,一定要加上,不可以 str.toLatin1().data() 这样一步完成,否则可能会出错。
补充:以上方法当 QString 里不含中文时,没有问题,但是 QString 内含有中文时,转换为 char * 就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后将上面的第3行修改为:
QByteArray ba = str.toLocal8Bit(); // toLocal8Bit 支持中文
方法2:
先将 QString 转为标准库中的 string 类型,然后将 string 转为 char *。如下:
QString filename;
std::string str = filename.toStdString();
const char* ch = str.c_str();
2.2 char * 转换为 QString
将 char * 转换为 QString 比较容易操作,我们可以使用 QString 的构造函数进行转换:
QString(const QLatin1String &str);
QLatin1String 的构造函数:
QLatin1String(const char *str);
因此用下面这个语句就可以将 char * ch 转换为 QString str 了,如下:
str = QString(QLatin1String(ch));
3、Qt数组转QString
方法1:将数组的内容以16进制写到QString中。
QString My_Hex_Read_File::BuffToHexString(uint8_t *data, uint32_t data_len)
{
QString String;
for(uint32_t i = 0;i < data_len; i++)
{
String += QString("%1").arg(data[i], 2, 16, QChar('0')) + " ";
}
return String;
}
方法2:将数组的内容以16进制写到QString中。
QString My_Hex_Read_File::BuffToHexString(uint8_t *data, uint32_t data_len)
{
QString String;
for(int i = 0; i < data_len; i++)
{
String += QString().sprintf("%02x ", data[i]);
}
return String;
}
4、窗口最小化、全屏、关闭
this->setWindowState(Qt::WindowMinimized);
this->setWindowState(Qt::WindowMaximized);
this->showFullScreen() ;
this->close();