在Qt中获取MAC地址

5
我将使用以下代码在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();
}

我的控制台没有输出任何内容?请指导我,谢谢...


你的 .pro 文件中是否包含了 CONFIG += console - zzk
@zzk 是的,我做了。顺便说一下,这是我的项目源代码:QT += core QT += network QT -= gui TARGET = qmacid CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp 我猜测 getMacAddress() 函数存在问题。 - highlander141
哦,return interface.hardwareAddress(); 所以可能它返回了那里,而没有打印任何东西。 - zzk
好的,我该如何将它保存到QString中?或者我需要进行转换之类的操作吗? - highlander141
可能是 在 Qt 中获取 Windows 上的 MAC 地址 的重复问题。 - iammilind
显示剩余5条评论
1个回答

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) - Kamil Klimek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接