Qquickwidget在QML中从C 发送信号
QQuickWidget send signal from c++ to slot in QML
我有一个应用程序,我想为此做一些动画。我做了一个QML文件,并使用Qquickwidget打开并将其显示在显示器中。现在,我想在C 和QML之间进行迭代。例如,当调用C 中的功能时,我希望在显示器中移动一个球。但是我无法在C 和QML之间建立连接。
欢迎每一个帮助。
我代码的一小部分:C
QQuickWidget *quickWidget = new QQuickWidget;
quickWidget->setSource(QUrl("qrc:/QML/main.qml"));
auto rootObject = quickWidget->rootObject();
// Connect C++ signal to QML slot
connect(this, SIGNAL(cppSignal()), rootObject, SLOT(qmlSlot()));
emit cppSignal();
qml
Rectangle {
id: tela
visible: true
width: 715
height: 77
color: '#E8E8E8'
// NumberAnimation {
// running: true
// target: bolinha
// property: "x"
// duration: 1000
// to: 600
// }
function qmlSlot() {
bolinha.visible= enabled
animBolinha.start();
}
}
在此处输入图像描述
我可以做什么来解决它?
我不确定是否可以像您一样从C 代码调用QML方法。
QT文档的推荐方法是:
所有QML方法都暴露于元对象系统。当功能暴露于元对象系统时,您可以使用QMetaObject::invokeMethod()
调用QML函数。
大概在您的情况下,您应该按照下面说(未测试)。
auto rootObject = quickWidget->rootObject();
QMetaObject::invokeMethod(rootObject, "qmlSlot");
Look Documentation(搜索调用QML方法)
如文档中所述,您可以使用 Q_ARG
通过参数和Q_RETURN_ARG
来接收返回参数。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 如何在C++中从字符串中分割字符
- 为什么在浮点中从大到小会引入更多的误差
- 如何在c++中从文本文件中逐行读取整数
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 如何在C++中从文件中读取/写入多个对象
- 如何在c++中从git建立外部库
- 如何在ros2中从rosbag2读取数据
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 如何在qt中从另一个类调用函数
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 在一次迭代中从 txt 文件中读取多行
- 如何使用c++中的ipp库从信号中进行fft
- Qquickwidget在QML中从C 发送信号
- 用于从原始ECG信号中提取心率的算法
- 在WINDOWS中从子进程向父进程发送信号
- 是否符合C++以及如何从信号中删除小部件
- 如何从一个信号中找出进程的pid是在linux中的c++中开始的
- 信号11能在一个mov指令中从一个寄存器被激发到另一个寄存器吗?
- 是否可以在Qt中从对象的析构函数发出信号?