Bu page, Q ++ içinden C++ işlevlerini çağırmayı gösterir.C++ ile QML arasındaki iletişim
Yapmak istediğim şey, bir Düğmedeki görüntüyü C++ işleviyle değiştirmektir (bir durum değişikliğini tetikle veya tamamlandı).
Bunu nasıl başarabilirim?
GÜNCELLEME
Ben Radon tarafından yaklaşımını çalıştı, ancak hemen ben bu satırı eklediğinizde:
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
Derleyici böyle yakınır:
durumdaerror: cannot dynamic_cast '((QMLCppBinder*)this)->QMLCppBinder::viewer.QDeclarativeView::rootObject()' (of type 'struct QGraphicsObject*') to type 'class QObject*' (source is a pointer to incomplete type)
alakalı olduğuna , QMLCppBinder, birkaç QML sayfasından C++ koduna bağlantıları şifrelemek için oluşturmaya çalıştığım bir sınıftır. Hangisi beklediğinden daha zor gibi görünüyor. şöyle, C++ 'QDeclarativeView bir bağlam mülkü olarak C++ nesne ayarlayabilirsiniz Yani
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());
}
}
"error: cannot dynamic_cast", "#include" başlıklı bir başlıktan kaynaklanıyor olabilir. –
Andrew