Qt API检查wifi是否启用

时间:2019-09-30 13:28:20

标签: qt qt5.12

Qt应用程序框架中是否有方法检查是否启用了wifi?以及这种方式是否适用于Android,iOS,macOS和Windows?

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

环境:
Qt 5.12.x商业版

1 个答案:

答案 0 :(得分:2)

您可以迭代QNetworkInterface实例(.pro中的QT+=network),并检查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。

关于其他属性一无所知。