使用c ++为QML创建一个中等复杂的绘图类

时间:2018-03-30 10:00:59

标签: qt qml qtquick2

我需要编写一个允许绘制x vs y数据(散点图​​,线图)的类,并使用QtQuick完成Application。应该可以显示几条曲线,并且可以根据用户选择动态添加。此外,对于共享x轴的不同量的两个y轴应该是可能的。现在我使用QSGGeometryNode实现了将单曲线绘制为QQuickItem。我认为最终的绘图类应该包含这些曲线的矢量以及包含标签作为对象的轴和刻度。我想我会使用QQuickPaintedItem做轴和刻度。

然而,我有点迷失(对Qt和QML不熟悉)如何组织这个。如果它是小部件,我只会为轴和绘图曲线创建子小部件。在QtQuick中有类似的东西吗?

1 个答案:

答案 0 :(得分:0)

好吧,实际上我并不知道,我可以像小工具一样创建子QQuickItems。这意味着如果我有一个PlotCurve对象,这是一个QQuickItem,我就像这样制作一个PlotWindow对象

#ifndef PLOTWINDOW_H
#define PLOTWINDOW_H

#include <QQuickItem>
#include "plotcurve.h"

class PlotWindow : public QQuickItem
{
    Q_OBJECT
public:
    PlotWindow();

private:
    QVector<PlotCurve *> _curves;

signals:

public slots:
};

#endif // PLOTWINDOW_H

并将其添加到构造函数中(作为示例)

PlotWindow::PlotWindow()
{
    _curves.append(new PlotCurve(this));
    _curves[0]->setVisible(true);
    _curves[0]->setWidth(300);
    _curves[0]->setHeight(300);
}

我可以将QQ作为QQuickPaintedItem进行操作,并以与PlotWindow对象类似的方式添加它们。