将动态生成的Qt图表嵌入到QML布局中,该图在c ++中进行操作和创建



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

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

恳求帮助我,告诉我我是否做错了?如果有什么办法请告诉我。

提前谢谢。

我的想法:

主.cpp

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"
    }
 }

QChartQChartView是基于QtWidget的类,您不能将它们与QtQuick2一起使用。

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

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

相关内容

  • 没有找到相关文章

最新更新