通过信号从QML接收QChart或QChartView对象
Receiving QChart or QChartView object from QML via signal
我需要访问 *.qml 中声明的 ChartView 项目。
我试图通过信号将其(ChartView { id: scopeViewTop})从QML传递到C++
main.qml:
onClick: {core.rcvQChart(mainForm.rootRect.mainSplitView.chartsNControls.
chartsSplitView.scopeViewTop}
核心.h:
public slots:
void rcvQChart(QtCharts::QChartView *chartObj);
核心.cpp:
void Core::rcvQChart(QtCharts::QChartView *chartObj){
qDebug() << " rcvQChart() called";
chartObj->hide();
}
如果我在接收的对象上使用任何方法,这会导致段错误。
从C++访问在 QML 中创建的具有特定 id 的对象的正确方法是什么?
解决方案是将QML项目作为QObject发送/接收,而不是作为QChartView:
void Core::rcvQChart(QObject *chartObj){
qDebug() << "received: " << chartObj;
qDebug() << "visible ? " << chartObj->property("visible");
chartObj->setProperty("visible", "false");
qDebug() << "visible ? " << chartObj->property("visible");
}
输出:
received: ScopeViewTop_QMLTYPE_15(0x2735d20, name = "chartViewTop")
visible ? QVariant(bool, true)
visible ? QVariant(bool, false)
相关文章:
- QChart在使用QDateTimeAxis时不显示任何系列数据
- Qchart 异常触发
- 我在QChartView中找不到缩放图形的鼠标滚轮滚动事件
- qt get child (Callout) from QChart
- 在运行 while 循环中从 QLineSeries 更新 QChart
- QChart实时性能
- Qchart, legend()->setGeometry 不起作用
- 以高分辨率渲染QChartView
- 单击QCHART图的轴时捕获鼠标事件
- QT5.12.1未知类型名称QCHART / QWIDGET / QEVENT /
- 在visual studio中使用QChart
- 通过信号从QML接收QChart或QChartView对象
- 如何强制QCHARTVIEW仅绘画自身的一部分
- QCHARTVIEW,橡皮筋和右鼠标按钮行为
- QChart in a QTextDocument