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.
О других атрибутах нет ни слова.