2013-03-08 65 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