c++ - 使用 QPainter 绘制的 QML 类型

标签 c++ qml qt5

在 QML 文档中,我找到了一个自定义类型(从 C++ 定义)的示例,可以使用 QPainter 在其上绘制:

标题:

#include <QtQuick/QQuickPaintedItem> 

class PieChart : public QQuickPaintedItem    
{
...

public:
    void paint(QPainter *painter);

...
};

来源:

void PieChart::paint(QPainter *painter)
{
    QPen pen(m_color, 2);
    painter->setPen(pen);
    painter->setRenderHints(QPainter::Antialiasing, true);
    painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16);
}

我怎样才能派生出一个类型来与 QPainter 异步绘制(例如一条线)? 谢谢!

最佳答案

您有多种方式进行异步绘制:

1) 在某个时候(甚至可能在单独的线程中)将您的内容绘制到 QImage 中,然后在 QQuickPaintedItem::paint() 中,简单地绘制该图像.

2) 使用QtQuick Canvas .请注意,这是用 JavaScript 绘制的,而不是用 C++ 绘制的,但在幕后它实际上是 QPainter 命令。 Canvas 支持各种 render strategies ,除其他外在专用线程或渲染线程中进行绘图

关于c++ - 使用 QPainter 绘制的 QML 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22754416/

相关文章:

qt - 如何以编程方式创建选项卡的项目?

permissions - Win7 C++ - kiosk 模式应用程序没有管理员访问权限

c++ - 如何在C++中访问DirectWrite继承的接口(interface)?

c++ - uniform_real_distribution 没有给出均匀分布

ios - 如何从 QT 应用程序设置 ios app bundle Id

qt - 实现 updatePaintNode 会导致其他 QML 元素也无法正确绘制

c++ - 素数计算器C++

c++ - 将字符串 vector 转换为 int

qt - 如何为 Windows 安装开源 Qt 库 5 二进制版本

c++ - 如何在 Qt 中使用 QDataStream 将自定义结构保存/加载到二进制文件中?