2013-03-08 59 views
3

我正在使用以下代码来获取Qt中的MAC ID。在Qt中获取MAC ID

的main.cpp

#include <QtCore/QCoreApplication> 
#include "QtNetwork/QNetworkInterface" 
#include "QString" 

QString getMacAddress() 
{ 
    foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) 
    { 
     // Return only the first non-loopback MAC Address 
     if (!(interface.flags() & QNetworkInterface::IsLoopBack)) 
      return interface.hardwareAddress(); 
     QString text = interface.hardwareAddress(); 
     qDebug() << text; 
    } 
    return QString(); 
} 

int main(int argc, char *argv[]) 
{ 
    getMacAddress(); 
    QCoreApplication a(argc, argv); 
    return a.exec(); 
} 

我越来越没有在控制台?引导我感谢...

+0

你'包括CONFIG + =在你的.pro console'? – zzk 2013-03-08 06:13:15

+0

@zzk是的,我所做的,仅供参考,这里是我的项目来源: 'QT + =核心 QT + =网络 QT - = GUI TARGET = qmacid CONFIG + =控制台 CONFIG - = app_bundle 模板=应用 SOURCES + = main.cpp '我认为** getMacAddress()**函数存在一些问题。 – highlander141 2013-03-08 06:16:18

+0

huh..'return interface.hardwareAddress();'所以也许它在没有打印任何东西的情况下返回。 – zzk 2013-03-08 06:25:02

回答

2

试试这个代码,以便显示每个接口的硬件地址:

QString getMacAddress() 
{ 
    QString text; 
    foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) 
    { 
     text += "Interface:"+interface.hardwareAddress()+"\n"; 
    } 
    return text; 
} 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    printf("%s\n", getMacAddress().toAscii().constData()); 
    exit(1); 
    return a.exec(); 
} 
+1

注意:要传递QString作为const char *使用'qPrintable(string) – 2013-03-08 08:38:20