**
更新时间:2021-12-06
**
对于一个懒人+健忘症,肯定是把所有常用的函数使用方法记录到小本本上,到时候直接ctrl+f查找使用。哈哈哈
下面我给一些比较常用到的封装函数给大家参考。
(主要都是给自己看的)
1.//获取当前时间
所需头文件:
#include < QDateTime>
QString getdate()
{
QDateTime current_date_time = QDateTime::currentDateTime();
QString date = current_date_time.toString("yyyy-MM-dd hh:mm::ss.zzz");
qDebug()<<date;
return date;
}
2.//读取本地配置文件信息–以mysql数据库为例
所需头文件:
#include < QSettings>
QSettings *configIni=new QSettings("./debug/config.ini",QSettings::IniFormat);
QString address=configIni->value("MysqlMsg/address").toString();
QString account =configIni->value("MysqlMsg/account").toString();
QString password =configIni->value("MysqlMsg/password").toString();
QString dbname =configIni->value("MysqlMsg/dbname").toString();
int port =configIni->value("MysqlMsg/port").toInt();
delete configIni;//读取完成删除指针
路径和名称什么的自己修改
3.//分割字符串
所需头文件:
#include < QList>
QString str="123;456;";
QStringList fgMsg=str.split(";");
QString str2=fgMsg.at(0);
4.//获取本机mac地址
所需头文件:
#include < QNetworkInterface>
QString getmacaddress()
{
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表
int nCnt = nets.count();
QString strMacAddr = "";
for(int i = 0; i < nCnt; i ++)
{
// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
strMacAddr = nets[i].hardwareAddress();
break;
}
}
return strMacAddr;
}
根据当前网口名,通过配置进行筛选,获取对应的网口mac物理地址
macType为配置文件的网口名称
(适用于双网卡的服务器)
//获取mac地址
QString getMacAddress()
{
// qDebug()<<"macType:"<<macType;
QString mac;
QList<QNetworkInterface> network = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface i, network)
{
QString netName = i.humanReadableName();
// qDebug()<<"netName:"<<netName;
if(netName.compare(macType) == 0)
{
mac=i.hardwareAddress();
mac.replace(":","-");
// qDebug()<<"mac:"<<i.hardwareAddress();
}
}
return mac;
}
5.获取时间戳(毫秒级)
所需头文件:
#include < QDateTime>
2种:
qint64 getunixtime()
{
QString timestamp = QString::number(QDateTime::currentMSecsSinceEpoch());
qint64 time= timestamp.toLongLong();
return time;
}
QString getunixtime()
{
QString timestamp = QString::number(QDateTime::currentMSecsSinceEpoch());
return timestamp;
}
6.读取本地图片为base64位图片
所需头文件:
pro文件添加QT += gui
#include < QImage>
#include < QBuffer>
QString pictoBase64(const QString & imgPath)
{
QImage image(imgPath);
QByteArray ba;
QBuffer buf(&ba);
image.save(&buf, "jpg");
QByteArray hexed = ba.toBase64();
buf.close();
QString basepic = hexed;
return basepic;
}
7.获取当前exe的路径
所需头文件:
#include < QCoreApplication>
QString execurrentPath = QCoreApplication::applicationDirPath();
qDebug()<<"execurrentPath"<<execurrentPath;
8.单次和多次执行的定时器使用
所需头文件:
#include < QTimer>
//单次执行定时器
//定时时间-对象-执行的槽函数
//lamdba
QTimer::singleShot( 1000, this, [=] {
//想要执行的代码
});
QTimer::singleShot( 1000, this,SLOT(printMsg());
//多次执行定时器
timer= new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(槽函数名()));
timer->start(60 * 1000);//1min
timer->stop(); //停止定时器
delete timer; //删除定时器指针
9.打印中文
所需头文件:
#include < QDebug>
qDebug()<<QString::fromLocal8Bit("中文");
10.判断两个QString是否相等
QString str = QString::fromLocal8Bit("球形");
QString str2;
if(str.compare(QString::fromLocal8Bit("球形") == 0)
if(str.compare(str2) == 0)
或者:
if(str ==QString::fromLocal8Bit("球形"))
{
}
11.QProcess调用cmd命令–重启关闭电脑
所需头文件:
#include < QProcess >
QProcess p;
p.start("shutdown -r -t 10");//10s重启电脑
p.start("shutdown -s -t 10");//10s关闭电脑
p.waitForStarted();
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());
12.QString字符串查找子字符串
Qt::CaseSensitive 字符大小写敏感(字母分大小写)
Qt::CaseInsensitive 无大小写敏感 (字母不分大小写)
QString aa="abc你好";
if (aa.contains("你好", Qt::CaseSensitive))
{
qDebug()<<"123";
}
13.获取本地文件夹里所有文件名
QStringList Widget::getLocalFilePicName(QString path)
{
QStringList fileNameList;
QFileInfoList list;
//判断路径是否存在
QDir dir(path);
if(!dir.exists())
{
QMessageBox::about(NULL,"tip", "not exist:");
}else{
//查看路径中后缀为.cfg格式的文件
QStringList filer;
filer << "*.jpg" <<"*.png";//设定需要的文件类型(*为所有类型)
list = dir.entryInfoList(filer);
//qDebug()<<"file path:"<<list;
//get file path
for(int i=0;i<list.size();i++)
{
fileNameList<<list.at(i).filePath();
}
//get file name
// for(int i=0;i<list.size();i++)
// {
// fileNameList<<list.at(i).fileName();
// }
// qDebug()<<"file name:"<<fileNameList;
}
return fileNameList;
}
14.sleep线程睡眠msec
/*
函数名:sleep()
参 数: msec - 单位为毫秒
描 述: 延时功能
*/
#include <QTime>
bool sleep(unsigned int msec)
{
QTime dieTime = QTime::currentTime().addMSecs(msec);
while (QTime::currentTime() < dieTime)
{
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
return true;
}
持续更新~
不得不说,qt的强大功能真的是太舒服了。
提供了很多常用的方法,不需要再自己写了。