Передача параметра из qml в qt
не так давно изучаю qml, возник вопрос, как можно передать по клику на кнопку в qml слое, параметр в c++.
Сам коннект обмена данными между c++ и qml осуществляю так:
main.cpp
QQmlApplicationEngine engine;
Class class;
QQmlContext *context = engine.rootContext();
context->setContextProperty("class", &class);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
class.h
signals:
void sendToQml(int k);
public slots:
void receiveFromQml();
private:
int k;
class.cpp
void Class::receiveFromQml()
{
k++;
emit sentToQml(k);
}
На слое qml принимаю параметр через Connections
main.qml
Connections{
target: class
onSendToQml: receiveIntToCpp.text = k;
}
Параметр выводится в текстовое поле, все ок, но не могу понять, как сделать обратную операцию, по клику на кнопку отправить переменную из qml в c++.
Может быть есть какие-нибудь примеры, или советы.
Спасибо за внимание!
Ответы (1 шт):
Автор решения: e.n.shirokov
→ Ссылка
context->setContextProperty("class", &class);
Вот этой строкой ты сделал объект class "видимым" в QML под именем "class".
Теперь, в QML-коде можно вызвать слот напрямую по имени объекта
class.receiveFromQml()