このページでは、QML 内から C++ 関数を呼び出す方法を示します。
私がやりたいのは、C++関数を介してボタンの画像を変更することです(状態変更をトリガーするか、それが行われます)。
どうすればこれを達成できますか?
アップデート
ラドンによるアプローチを試みましたが、すぐに次の行を挿入すると:
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
コンパイラは次のように文句を言います:
error: cannot dynamic_cast '((QMLCppBinder*)this)->QMLCppBinder::viewer.QDeclarativeView::rootObject()' (of type 'struct QGraphicsObject*') to type 'class QObject*' (source is a pointer to incomplete type)
関連する場合、QMLCppBinder は、いくつかの QML ページから C++ コードへの接続をカプセル化するために構築しようとするクラスです。これは、予想以上に難しいようです。
これに何らかのコンテキストを与えるためのスケルトン クラスを次に示します。
class QMLCppBinder : public QObject
{
Q_OBJECT
public:
QDeclarativeView viewer;
QMLCppBinder() {
viewer.setSource(QUrl("qml/Connect/main.qml"));
viewer.showFullScreen();
// ERROR
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
}
}