我需要访问在ChartView中声明的*.qml项。
我尝试通过信号将它(ChartView { id: scopeViewTop})从QML传递到C++。
main.qml:
onClick: {core.rcvQChart(mainForm.rootRect.mainSplitView.chartsNControls.
chartsSplitView.scopeViewTop}核心.h:
public slots:
void rcvQChart(QtCharts::QChartView *chartObj);core.cpp:
void Core::rcvQChart(QtCharts::QChartView *chartObj){
qDebug() << " rcvQChart() called";
chartObj->hide();
}如果我在接收到的对象上使用任何方法,这将导致分段错误。
从C++访问具有QML中创建的特定id的对象的正确方法是什么?
发布于 2017-01-31 10:04:26
解决方案是将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)https://stackoverflow.com/questions/41896303
复制相似问题