【发布时间】:2018-01-18 18:10:59
【问题描述】:
我最近开始使用 QML,我正在寻找一种将数据从 c++ 提供给 QML 中的 ChartView 的方法。 我更喜欢这样的解决方案,我可以发送带有 Q_PROPERTY 之类的 QMap,以便它自动更新。
我已经搜索并发现您可以执行一个功能,然后您可以使用“append()”将值添加到图表中。但我似乎无法向 QML 发送某种列表...
QML 文件:
ChartView {
theme: ChartView.ChartThemeQt
antialiasing: true
DateTimeAxis {
id: dateTimeAxisX
}
ValueAxis{
id: valueAxisY
min: 0
max: 15
titleText: "Voltage (V)"
}
LineSeries {
id: voltageSeries
axisX: dateTimeAxisX
axisY: valueAxisY
name: "Battery Voltage"
}
}
机器人.h:
class Robot: public QObject
{
...
Q_PROPERTY(QMap<int, double> list_battery_voltages READ getList_battery_voltages NOTIFY listBatteryVoltagesChanged)
...
}
main.cpp:
int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QApplication app(argc, argv);
QQmlApplicationEngine engine;
// Load custom class inside engine
QScopedPointer<Robot> robot(new Robot(app.applicationDirPath() + "/robot_settings.ini"));
engine.rootContext()->setContextProperty("robot", robot.data());
QQmlComponent component(&engine, QUrl(QLatin1String("qrc:/main.qml")));
component.create();
return app.exec();
}
是否有我正在监督的优雅解决方案?
【问题讨论】:
-
为什么不用QAbstractListmodel?
-
@eyllanesc 我从未使用过 QAbstractListmodel,但我不知道这将如何解决我的问题...
-
你需要使用QMap吗?为什么要使用 QMap?