Получение MAC ID в Qt

Я использую следующий код для получения MAC-идентификатора в Qt.

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();
}

Я ничего не получаю в консоли? Веди меня спасибо...


person highlander141    schedule 08.03.2013    source источник
comment
вы включили CONFIG += console в свой .pro?   -  person zzk    schedule 08.03.2013
comment
@zzk Да, да, к вашему сведению, вот исходный код моего проекта: QT += core QT += network QT -= gui TARGET = qmacid CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp Я предполагаю, что есть какая-то проблема в функции getMacAddress().   -  person highlander141    schedule 08.03.2013
comment
да..return interface.hardwareAddress(); так что, возможно, он возвращается туда, ничего не печатая.   -  person zzk    schedule 08.03.2013
comment
Правильно, как я могу сохранить его в QString? ИЛИ мне нужно преобразовать его или что-то?   -  person highlander141    schedule 08.03.2013
comment
Посмотрите на interface.allAddresses(), а не только на hardwareAddress.   -  person    schedule 08.03.2013
comment
@Sosukodo, спасибо за это, верно, как мне показать это в окне консоли ?? Пожалуйста, помогите   -  person highlander141    schedule 08.03.2013
comment
Удалите условное выражение, которое проверяет наличие IsLoopBack.   -  person    schedule 08.03.2013
comment
HardwareAddress, очевидно, пуст для интерфейса, который передает ваше условие, поэтому вы должны посмотреть на все интерфейсы своими глазами, чтобы увидеть, какие данные доступны.   -  person    schedule 08.03.2013
comment
@Sosukodo Да, я это сделал, но в консоли ничего не отображается.   -  person highlander141    schedule 08.03.2013
comment
Возможный дубликат Получение MAC-адреса в окнах в Qt   -  person iammilind    schedule 08.01.2019


Ответы (1)


Попробуйте этот код, чтобы показать аппаратные адреса каждого интерфейса:

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();
}
person Community    schedule 08.03.2013
comment
примечание: для передачи QString как const char * используйте qPrintable(string) - person Kamil Klimek; 08.03.2013