0

我是使用 QML 编程 Qt 的新手,我喜欢做一个用 QML 设计的程序,它有一个复合的前端,QtChart,它是用 c++ 编写的。

我喜欢在 QML 前端的一个特定位置显示不同样式和类型的图表,所以我认为在 c++ 中进行所有图表操作会更容易。

请帮助我,并告诉我我是否做错了?如果有任何方法请告诉我。

提前致谢。

我的想法:

主文件

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlEngine engine;
    QQmlComponent component(&engine,QUrl::fromLocalFile("qrc:/main.qml"));
    QObject *object = component.create();

    QQmlApplicationEngine engine2;
    engine2.load(QUrl(QStringLiteral("qrc:/main.qml")));

    QObject *objekt = engine2.rootObjects().first();

    QObject *rect = objekt->findChild<QObject*>("myChart");
    if (rect)
    {
        qDebug("it works");

        QLineSeries *series = new QLineSeries();
        series->append(0, 6);
        series->append(2, 4);
        series->append(3, 8);
        series->append(7, 4);
        series->append(10, 5);

        QChart *graph = new QChart();
        graph->addSeries(series);
        QChartView *mayChart = new QChartView(graph);
        mayChart->setRenderHint(QPainter::Antialiasing);

        //Hear I don´t know, how I can do such an operation 
        rect.setCentralWidget(mayChart);

     }
}

QML“main.qml”

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    objectName: "mainWindow"

    Rectangle{
        width: parent.width
        height: parent.height
        color: "black"
        objectName: "rect"

    }
 }
4

1 回答 1

2

QChart并且QChartViewQtWidget基于类,你不能使用那些与QtQuick2.

您将需要一个QtQuick2 ChartView元素并在 C++ 和 QML 之间传递数据。

一种选择是LineSeries在 QML 中创建一个空并将其传递给 C++ fpr 填充。

于 2017-02-15T13:42:14.860 回答