我需要访问在* .qml中声明的ChartView项目。
我试图通过信号将它( ChartView {id:scopeViewTop} )从QML传递给C ++
main.qml:
onClick: {core.rcvQChart(mainForm.rootRect.mainSplitView.chartsNControls.
chartsSplitView.scopeViewTop}
core.h:
public slots:
void rcvQChart(QtCharts::QChartView *chartObj);
core.cpp:
void Core::rcvQChart(QtCharts::QChartView *chartObj){
qDebug() << " rcvQChart() called";
chartObj->hide();
}
如果我对接收到的对象使用任何方法,则会导致段错误。
从C ++访问具有在QML中创建的特定id的对象的正确方法是什么?
答案 0 :(得分:0)
解决方案是将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)