QT += network2.添加头文件
#include <QHostAddress>#include <QHostInfo>#include <QNetworkInterface>#include <QProcess>
//获取主机名 QString localHost = QHostInfo::localHostName();
//获取用户名
QString getUserName()
{
#if 1
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);
break;
}
}
}
return "unknown";
#else
QString userName = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
userName = userName.section("/", -1, -1);
return userName;
#endif
}
//获取本机IPQString 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); }
参考文档: