如何从cpp到qml定义QNetworkRequest对象

问题描述 投票:0回答:2

我在 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::setContextProperty(const char[15], QNetworkRequest&)'

我已阅读

QQmlContext
QVariant
的文档,并且我明白,我不能以这种方式定义
QNetworkRequest
对象。我尝试使用
objectName
定义从 QML 到 C++ 的按钮并使用信号和插槽,但它不起作用。也许有人知道在 QML 中定义 C++ 对象的方法,或者 QML 到 C++ 的方法?我还没找到。

c++ qt qml qnetworkrequest
2个回答
0
投票

我找到了解决问题的方法:

    engine.rootContext()->setContextProperty("UserRegRequest", QVariant::fromValue(UserRegRequest));

从 C++ 创建具有指定属性的 QML 对象

请投票结束主题


0
投票

我明白,这不是一个解决方案,因为我收到错误:服务器回复:错误的请求。但如果我在 sendRequest 方法中对 url 进行硬编码,一切都会正常。这意味着如果我需要对多个页面进行 post 请求,我需要在 sendRequest 方法中使用硬编码 url 创建几个类似的类。

© www.soinside.com 2019 - 2024. All rights reserved.