如何解决如何将 QML 中声明的信号连接到 C++ 方法或 lambda
我在 QML 中声明了 Rectangle,如下所示:
Rectangle {
objectName: "myquickitemobject"
signal doSomething
MouseArea {
anchors.fill: parent
onClicked: {
doSomething()
}
}
}
我可以像下面那样将 myquickitemobject
的 QQuickItem 对象放入 C++ 中
// main.cpp
QQuickItem *my_quickitem = m_qml_item_root->findChild<QQuickItem*>("myquickitemobject");
问题:
如何将 QML 中的 signal doSomething
贴标连接到 C++ 中的函数或 lambda?
试图做类似下面的事情但不起作用..
QObject::connect(my_quickitem,doSomething,[]{
std::cout << "Signal doSomething called" << std::endl;
});
解决方法
在你的类中声明一个像下面这样的插槽:
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()));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。