我在 QML 中制作了一个注册页面的前端部分,并使用
textInput
函数处理 setContextProperty
。但是当我需要发布请求时我遇到了问题。负责这个方法
void NetworkManager::sendRequest(const QNetworkRequest &request, const QJsonObject &data) {
QNetworkReply *reply = m_manager->post(request, QJsonDocument(data).toJson());
m_replies.append(reply);
}
m_manager
和 m_replies
在类 so 中定义
private:
QNetworkAccessManager *m_manager;
QList<QNetworkReply *> m_replies;
我尝试在注册按钮上的
sendRequest
信号内使用方法onClicked
。但如果我尝试在 QML 中定义 QNetworkRequest
对象,则会出现错误:我已阅读
QQmlContext
和 QVariant
的文档,并且我明白,我不能以这种方式定义 QNetworkRequest
对象。我尝试使用 objectName
定义从 QML 到 C++ 的按钮并使用信号和插槽,但它不起作用。也许有人知道在 QML 中定义 C++ 对象的方法,或者 QML 到 C++ 的方法?我还没找到。
我找到了解决问题的方法:
engine.rootContext()->setContextProperty("UserRegRequest", QVariant::fromValue(UserRegRequest));
请投票结束主题
我明白,这不是一个解决方案,因为我收到错误:服务器回复:错误的请求。但如果我在 sendRequest 方法中对 url 进行硬编码,一切都会正常。这意味着如果我需要对多个页面进行 post 请求,我需要在 sendRequest 方法中使用硬编码 url 创建几个类似的类。