通过信号从 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}
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 的对象的正确方法是什么?
解决方案是 send/receive 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)
我需要访问 *.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 的对象的正确方法是什么?
解决方案是 send/receive 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)