Qt API, чтобы проверить, включен / отключен Wi-Fi

Есть ли способ в структуре приложения Qt проверить, включен ли Wi-Fi? А способ работает на Android, iOS, macOS и Windows?

Обратите внимание, что я хочу проверить, включен ли Wi-Fi или нет. я не беспокоюсь, есть ли у меня подключение к Интернету.

Среда:
коммерческая версия Qt 5.12.x

1 ответ

Решение

Вы можете перебирать экземпляры 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.

О других атрибутах нет ни слова.

Другие вопросы по тегам