在Qt5中从C ++操作QML Canvas

Len*_*and 5 c++ audio visualization qml qt5

在我的Qt5应用程序中,我有一些C ++和一些QML协调工作(也就是来回发送信号)。

在这一点上,我想实现一个小部件,该小部件以QM​​L中显示的实际波形形式实时显示正在播放的音频流的可视化更新。因此,我想知道有哪些替代方法可以解决此问题?什么是最简单的代码替代方法,哪个具有最佳性能?

我的天真想法是:

  • 在我的QML中创建画布,然后从C ++直接绘制到此画布
  • 将实际样本作为缓冲区发送到QML,并从js在画布中绘制它们
  • 将实际样本作为缓冲区发送到QML并以其他方式绘制
  • 编写自定义C ++小部件并以某种方式在QML中显示

PS:我已经可以访问实际的样本以生成可视化图像,但是,如果您也对此有一个聪明的解决方案,那么我会很高兴!

谢谢

Sma*_*sho 4

您可以子类化QQuickItem。另外,还有一个子类QQuickPaintedItem允许您使用 QPainter 进行绘制。

这里有一个QQuickPaintedItem用法的示例