Qt获取本机的IP地址、用户名等相关信息

来源:互联网 发布:宽带多重网络怎么回事 编辑:程序博客网 时间:2024/05/10 20:41
1.pro文件加入
[cpp] view plain copy
  1. QT       += network  
2.添加头文件
[cpp] view plain copy
  1. #include <QHostAddress>  
  2. #include <QHostInfo>  
  3. #include <QNetworkInterface>  
  4. #include <QProcess>  
[cpp] view plain copy
  1. //获取主机名  
  2. QString localHost = QHostInfo::localHostName();  
[cpp] view plain copy
  1. //获取用户名  
  2. QString getUserName()  
  3. {  
  4. #if 1  
  5.     QStringList envVariables;  
  6.     envVariables << "USERNAME.*" << "USER.*" << "USERDOMAIN.*"  
  7.                  << "HOSTNAME.*" << "DOMAINNAME.*";  
  8.     QStringList environment = QProcess::systemEnvironment();  
  9.     foreach (QString string, envVariables) {  
  10.         int index = environment.indexOf(QRegExp(string));  
  11.         if (index != -1) {  
  12.             QStringList stringList = environment.at(index).split('=');  
  13.             if (stringList.size() == 2) {  
  14.                 return stringList.at(1);  
  15.                 break;  
  16.             }  
  17.         }  
  18.     }  
  19.     return "unknown";  
  20. #else  
  21.     QString userName = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);  
  22.     userName = userName.section("/", -1, -1);  
  23.     return userName;  
  24. #endif  
  25. }  
[cpp] view plain copy
  1. //获取本机IP  
  2. QString getIP(QString localHost)  
  3. {  
  4.     QString ipAddr;  
  5. #if 0  
  6.     QList<QHostAddress> AddressList = QNetworkInterface::allAddresses();  
  7.     foreach(QHostAddress address, AddressList){  
  8.         if(address.protocol() == QAbstractSocket::IPv4Protocol &&  
  9.                 address != QHostAddress::Null &&  
  10.                 address != QHostAddress::LocalHost){  
  11.             if (address.toString().contains("127.0.")){  
  12.                 continue;  
  13.             }  
  14.             ipAddr = address.toString();  
  15.             break;  
  16.         }  
  17.     }  
  18. #else  
  19.     QHostInfo info = QHostInfo::fromName(localHost);  
  20.     info.addresses();//QHostInfo的address函数获取本机ip地址  
  21.     //如果存在多条ip地址ipv4和ipv6:  
  22.     foreach(QHostAddress address,info.addresses())  
  23.     {  
  24.         if(address.protocol()==QAbstractSocket::IPv4Protocol){//只取ipv4协议的地址  
  25.             qDebug()<<address.toString();  
  26.             ipAddr = address.toString();  
  27.         }  
  28.     }  
  29. #endif  
  30.     return ipAddr;  
  31. }  
[cpp] view plain copy
  1. //获取计算机详细信息  
  2. void slotDetail()    
  3. {    
  4.     QString detail="";    
  5.     QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();    
  6.     for(int i=0;i<list.count();i++)    
  7.     {    
  8.         QNetworkInterface interface=list.at(i);    
  9.         detail=detail+tr("设备:")+interface.name()+"\n";    
  10.         detail=detail+tr("硬件地址:")+interface.hardwareAddress()+"\n";    
  11.         QList<QNetworkAddressEntry> entryList=interface.addressEntries();    
  12.         for(int j=0;j<entryList.count();j++)    
  13.         {    
  14.             QNetworkAddressEntry entry=entryList.at(j);    
  15.             detail=detail+"\t"+tr("IP 地址:")+entry.ip().toString()+"\n";    
  16.             detail=detail+"\t"+tr("子网掩码:")+entry.netmask().toString()+"\n";    
  17.             detail=detail+"\t"+tr("广播地址:")+entry.broadcast().toString()+"\n";    
  18.         }    
  19.     }    
  20.     QMessageBox::information(this,tr("Detail"),detail);    
  21. }  
原创粉丝点击