QT 獲取本機系統信息

文件配置

.pro

QT       += network

頭文件

#include <QHostAddress>
#include <QHostInfo>
#include <QNetworkInterface>
#include <QProcess>

獲取主機名

    //獲取主機名
    QString localHost = QHostInfo::localHostName();

獲取用戶名

QString getUserName()
{
    QStringList envVariables;
    envVariables << "USERNAME.*" << "USER.*" << "USERDOMAIN.*"
                 << "HOSTNAME.*" << "DOMAINNAME.*";
    QStringList environment = QProcess::systemEnvironment();
    foreach (QString string, envVariables) {
        int index = environment.indexOf(QRegExp(string));
        if (index != -1) {
            QStringList stringList = environment.at(index).split('=');
            if (stringList.size() == 2) {
                return stringList.at(1);
            }
        }
    }
    return "unknown";
}

獲取本機IP

QString getIP(QString localHost)
{
    QString ipAddr;
#if 0
    QList<QHostAddress> AddressList = QNetworkInterface::allAddresses();
    foreach(QHostAddress address, AddressList){
        if(address.protocol() == QAbstractSocket::IPv4Protocol &&
                address != QHostAddress::Null &&
                address != QHostAddress::LocalHost){
            if (address.toString().contains("127.0.")){
                continue;
            }
            ipAddr = address.toString();
            break;
        }
    }
#else
    QHostInfo info = QHostInfo::fromName(localHost);
    info.addresses();//QHostInfo的address函數獲取本機ip地址
    //如果存在多條ip地址ipv4和ipv6:
    foreach(QHostAddress address,info.addresses())
    {
        if(address.protocol()==QAbstractSocket::IPv4Protocol){//只取ipv4協議的地址
            qDebug()<<address.toString();
            ipAddr = address.toString();
        }
    }
#endif
    return ipAddr;
}

獲取計算機詳細信息

//獲取計算機詳細信息
void slotDetail()  
{  
    QString detail="";  
    QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();  
    for(int i=0;i<list.count();i++)  
    {  
        QNetworkInterface interface=list.at(i);  
        detail=detail+tr("設備:")+interface.name()+"\n";  
        detail=detail+tr("硬件地址:")+interface.hardwareAddress()+"\n";  
        QList<QNetworkAddressEntry> entryList=interface.addressEntries();  
        for(int j=0;j<entryList.count();j++)  
        {  
            QNetworkAddressEntry entry=entryList.at(j);  
            detail=detail+"\t"+tr("IP 地址:")+entry.ip().toString()+"\n";  
            detail=detail+"\t"+tr("子網掩碼:")+entry.netmask().toString()+"\n";  
            detail=detail+"\t"+tr("廣播地址:")+entry.broadcast().toString()+"\n";  
        }  
    }  
    QMessageBox::information(this,tr("Detail"),detail);  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章