【问题标题】:Creating a moderatly complex plotting class in c++ for QML在 C++ 中为 QML 创建一个中等复杂的绘图类
【发布时间】:2018-03-30 10:00:59
【问题描述】:

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

但是,我对如何组织它有点迷茫(对 Qt 和 QML 不熟悉)。如果是小部件,我只会为轴创建子小部件并绘制曲线。 QtQuick 中是否有类似的可能?

【问题讨论】:

标签: qt qml qtquick2


【解决方案1】:

好的,实际上我不知道我可以像在小部件案例中一样创建子 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);
}

我可以将轴作为 QQuickPaintedItem 并以类似的方式将它们添加到 PlotWindow 对象。

【讨论】:

  • 您可以查看为 QWidget 编写的 QCustomPlot,但将其移植到 QtQuick 并不难。我自己做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多