QT常用工具类函数封装汇总

**

更新时间:2020-07-25

**

对于一个懒人+健忘症,肯定是把所有常用的函数使用方法记录到小本本上,到时候直接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的强大功能真的是太舒服了。
提供了很多常用的方法,不需要再自己写了。

你可能感兴趣的:(QT学习)