我是用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"
}
}
QChart
和QChartView
是基于QtWidget
的类,您不能将它们与QtQuick2
一起使用。
您将需要一个QtQuick2
ChartView
元素,并在C++和 QML 之间传递数据。
一种选择是在 QML 中创建一个空LineSeries
并将其传递给 C++ fpr 填充。