在Qt5中使用C ++操作QML Canvas

时间:2015-01-29 03:06:06

标签: c++ audio qml qt5 visualization

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

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

我天真的想法是:

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

PS:我已经可以访问实际样本来生成可视化,但是如果你有一个聪明的解决方案,那么我会高兴极了!

由于

1 个答案:

答案 0 :(得分:3)

你可以继承QQuickItem。此外,还有一个子类QQuickPaintedItem,允许您使用QPainter进行绘制。

这里有example of QQuickPaintedItem用法