在 Qt5 中从 C++ 操作 QML Canvas
Manipulate QML Canvas from C++ in Qt5
在我的 Qt5 应用程序中,我有一些 C++ 和一些 QML 协调工作(也就是来回发送信号)。
此时我想实现一个小部件,以我的 QML 中显示的实际波形的形式显示播放音频流的实时更新可视化。所以我想知道有哪些替代方法可以解决这个问题?什么是最简单的代码替代方案?哪种替代方案的性能最好?
我天真的想法是:
- 在我的 QML 中创建一个 Canvas,然后从 C++
直接绘制到这个 canvas
- 将实际样本作为缓冲区发送到 QML 并从 jscanvas 中绘制它们
- 将实际样本作为缓冲区发送到 QML 并以其他方式绘制它们
- 编写自定义 C++ 小部件并以某种方式在 QML 中显示它
PS:我已经可以访问实际示例来生成可视化效果,但是如果您对此也有巧妙的解决方案,那么我会非常高兴!
谢谢
您可以子类化 QQuickItem. Also, there is a subclass, QQuickPaintedItem 以允许您使用 QPainter 进行绘图。
这里有一个example of QQuickPaintedItem用法
在我的 Qt5 应用程序中,我有一些 C++ 和一些 QML 协调工作(也就是来回发送信号)。
此时我想实现一个小部件,以我的 QML 中显示的实际波形的形式显示播放音频流的实时更新可视化。所以我想知道有哪些替代方法可以解决这个问题?什么是最简单的代码替代方案?哪种替代方案的性能最好?
我天真的想法是:
- 在我的 QML 中创建一个 Canvas,然后从 C++ 直接绘制到这个 canvas
- 将实际样本作为缓冲区发送到 QML 并从 jscanvas 中绘制它们
- 将实际样本作为缓冲区发送到 QML 并以其他方式绘制它们
- 编写自定义 C++ 小部件并以某种方式在 QML 中显示它
PS:我已经可以访问实际示例来生成可视化效果,但是如果您对此也有巧妙的解决方案,那么我会非常高兴!
谢谢
您可以子类化 QQuickItem. Also, there is a subclass, QQuickPaintedItem 以允许您使用 QPainter 进行绘图。
这里有一个example of QQuickPaintedItem用法