Как связать сигнал, объявленный в QML, с методом C++ или лямбда [дубликат]
У меня Rectangle объявлен в QML, как показано ниже:
Rectangle {
objectName: "myquickitemobject"
signal doSomething
MouseArea {
anchors.fill: parent
onClicked: {
doSomething()
}
}
}
Я могу получить объект QQuickItem из
myquickitemobject
в C++, как показано ниже
// main.cpp
QQuickItem *my_quickitem = m_qml_item_root->findChild<QQuickItem*>("myquickitemobject");
Вопрос:
Как мне подключиться
signal doSomething
переводится в QML в функцию или лямбда в C++?
Попытка сделать что-то вроде ниже, но не работает ...
QObject::connect(my_quickitem, doSomething, []{
std::cout << "Signal doSomething called" << std::endl;
});
1 ответ
Объявите в своем классе слот, как показано ниже:
Q_SLOT void DoSomething() {
std::cout << "Do something" << std::endl;
}
А затем соедините их, как показано ниже:
QQuickItem *my_quickitem = m_qml_item_root->findChild<QQuickItem*>("myquickitemobject");
QObject::connect(my_quickitem, SIGNAL(doSomething()), this, SLOT(DoSomething()));