Qt API, чтобы проверить, включен ли Wi-Fi / отключен - PullRequest
0 голосов
/ 30 сентября 2019

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

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

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

1 Ответ

2 голосов
/ 30 сентября 2019

Вы можете выполнить итерации 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.

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

...