**
**
对于一个懒人+健忘症,肯定是把所有常用的函数使用方法记录到小本本上,到时候直接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:"<
QString mac;
QList<QNetworkInterface> network = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface i, network)
{
QString netName = i.humanReadableName();
// qDebug()<<"netName:"<
if(netName.compare(macType) == 0)
{
mac=i.hardwareAddress();
mac.replace(":","-");
// qDebug()<<"mac:"<
}
}
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";
}
持续更新~
不得不说,qt的强大功能真的是太舒服了。
提供了很多常用的方法,不需要再自己写了。