- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的笔记本电脑(Qt 5.11,Win10 x64)上,我通过 WIFI 连接,Qt https 连接有效。我想知道为什么我看不到任何事件的网络配置,但可以创建 HTTP 请求。此外,m_networkConfigManager->isOnline()
始终为 false
。我是否遗漏了什么,或者这只是一个 Qt 错误?
// signal / slot
connect(m_networkConfigManager, &QNetworkConfigurationManager::updateCompleted, this, &CApplication::onNetworkConfigurationsUpdateCompleted, Qt::QueuedConnection);
// called via signal
void CApplication::onNetworkConfigurationsUpdateCompleted()
{
const QNetworkConfiguration config = m_networkConfigManager->defaultConfiguration();
for (const QNetworkConfiguration &config : m_networkConfigManager->allConfigurations())
{
// never reached
const QString cs = CNetworkUtils::toString(config);
CLogMessage(this).info("Network config: %1") << cs;
}
// always false
bool isOnline = m_networkConfigManager->isOnline();
.... debug messages, I see onNetworkConfigurationsUpdateCompleted being called 3 times
....
}
--- 编辑---
onNetworkConfigurationsUpdateCompleted
被调用了 3 次,然后每隔 10 秒以某种方式定期调用。m_networkConfigManager
之后,我调用 m_networkConfigManager->updateConfigurations();
--- 编辑 2 ---
此版本产生相同的结果(错误)(未排队)
connect(m_networkConfigManager, &QNetworkConfigurationManager::updateCompleted, [ = ]
{
bool isOnline = m_networkConfigManager->isOnline();
qDebug() << isOnline;
});
这永远不会被调用
connect(m_networkConfigManager, &QNetworkConfigurationManager::onlineStateChanged, [](bool isOnline)
{
qDebug() << isOnline; // never get here
});
--- 编辑 3 ---
最佳答案
从 Qt 错误跟踪系统来看,最有可能是 Qt 错误。整个承载系统似乎对WIFI来说是坏的,或者至少不是很可靠。由于平台 (OS) 的不同,不同的 Qt 版本中存在不同的问题,因此很难追踪。
我正在使用一个简单的 hack 解决方法(不好的做法,但有效)。如果没有网络配置,这可能意味着我遇到了那个问题,或者根本没有网络接口(interface)。在这种情况下,我只是将 QAM
设置为 Accessible
并通过 http 请求进行测试。如果可以,则可以使用 WIFI。
const QList<QNetworkConfiguration> allConfigurations = m_networkConfigManager->allConfigurations();
if (allConfigurations.isEmpty()) {
m_accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);`
.... test Qt http request ....
}
关于c++ - 没有 QNetworkConfiguration 虽然我可以连接到 WIFI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51686943/
Qt 文档说我可以获得一个弹出窗口供用户选择 QNetworkConfiguration。但是我该怎么做呢? 当我有 QNetworkConfiguration config; QNetworkSes
在我的笔记本电脑(Qt 5.11,Win10 x64)上,我通过 WIFI 连接,Qt https 连接有效。我想知道为什么我看不到任何事件的网络配置,但可以创建 HTTP 请求。此外,m_netwo
我在 Windows 10 上使用 Qt 5.15.2 企业版。尽管应用程序运行良好,但我不断收到以下警告消息: warning C4996: 'QNetworkConfiguration': was
我是一名优秀的程序员,十分优秀!