0

Qt应用程序框架中有没有办法检查wifi是否启用?这种方式适用于 Android、iOS、macOS 和 Windows 吗?

请注意,我想检查是否启用了 wifi。如果我有互联网连接,我不会打扰。

环境:
Qt 5.12.x 商业版

4

1 回答 1

2

您可以迭代您的QNetworkInterface实例(QT+=network在您的 .pro 中),并检查type()无线接口,并检查flags()它是否已启动并运行。例子:

#include <QCoreApplication>
#include <QNetworkInterface>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    for(const QNetworkInterface& iface : QNetworkInterface::allInterfaces()) {
        if (iface.type() == QNetworkInterface::Wifi) {
            qDebug() << iface.humanReadableName() << "(" << iface.name() << ")"
                     << "is up:" << iface.flags().testFlag(QNetworkInterface::IsUp)
                     << "is running:" << iface.flags().testFlag(QNetworkInterface::IsRunning);
        }
    }
}

它应该是跨平台的,但文档说:

并非所有操作系统都支持报告所有功能。在所有平台中,此类仅保证列出 IPv4 地址。特别是,IPv6 地址列表仅在 Windows、Linux、macOS 和 BSD 上受支持。

没有关于其他属性的消息。

于 2019-09-30T15:40:16.927 回答