QML'de kod yazmakta yeniyim ve ilk Sailfish OS uygulamasını yazmaya çalışıyorum. Arka uç için bir C++ sınıfı oluşturdum. Bununla birlikte, bu C++ sınıfının bir nesnesini tanımlamak ve hem Kapak'ta hem de ana Sayfada (iki ayrı QML dosyası) kullanmak istiyorum, böylece o sınıfta saklanan aynı verilerle çalışabilirim. Ayrı QML dosyalarındaki aynı nesneyi nasıl adresler?QML dosyaları arasındaki bir nesneyi paylaşma
Sen QtQuick bağlamında nesne kullanılabilir hale getirebilirsiniz
5
A
cevap
7
:
main.cppMySharedObject obj;
view.rootContext()->setContextProperty("sharedObject", &obj);
ve her yerden QML in
class MySharedObject : public QObject {
Q_OBJECT
public:
MySharedObject(QObject * p = 0) : QObject(p) {}
public slots:
QString mySharedSlot() { return "blablabla"; }
};
:
console.log(sharedObject.mySharedSlot())
Eğer 'etmezsen QML'de "global" olmak istiyorsan, onu kapsüllemek için birazcık gidebilirsin, sadece başka bir QObject
türevini yarat ed sınıfı, QML'de örnek oluşturmak ve bu nesne örneğine bir işaretçi döndüren bir özelliğe sahip olmak için kaydedin, bu şekilde yalnızca "erişimci" QML nesnesini başlattığınız yerde kullanılabilir olacaktır.
MySharedObject obj;
qRegisterMetaType<MySharedObject*>();
SharedObjAccessor::setSharedObject(&obj);
qmlRegisterType<SharedObjAccessor>("Test", 1, 0, "SharedObjAccessor");
ve QML
içindeimport Test 1.0
...
SharedObjAccessor {
id: acc
}
...
console.log(acc.sharedObject.mySharedSlot())
main.cpp içinde
class SharedObjAccessor : public QObject {
Q_OBJECT
Q_PROPERTY(MySharedObject * sharedObject READ sharedObject)
public:
SharedObjAccessor(QObject * p = 0) : QObject(p) {}
MySharedObject * sharedObject() { return _obj; }
static void setSharedObject(MySharedObject * obj) { _obj = obj; }
private:
static MySharedObject * _obj; // remember to init in the cpp file
};
İlgili konular
- 1. İki iş parçacığı ile ana program arasındaki bir nesneyi paylaşma
- 2. Uygulamalar arasında serileştirilmiş bir nesneyi paylaşma
- 3. React Bileşenleri Arasındaki Özellikleri Paylaşma
- 4. C++ ile QML arasındaki iletişim
- 5. QML: QML ekranını
- 6. QML
- 7. QML ifadesi
- 8. QML FolderListModel
- 9. QML - bir ataya hitap
- 10. Bunu nasıl QML kod parçası var QML
- 11. FileDialog QML
- 12. ELF dosyaları ve bin dosyaları arasındaki fark nedir?
- 13. URL'leri ortalıkta paylaşma hatası
- 14. Postala bağlantıyı paylaşma
- 15. FaceBook Android'de İçeriği Paylaşma
- 16. Android'de Uygulama işlevselliğini paylaşma
- 17. QML görüntüsünü kaydetme
- 18. QML Text element hyperlink
- 19. QML değişiklik görünümüne tıklayın
- 20. .so ve .a dosyaları arasındaki fark nedir?
- 21. QML C Çocuk
- 22. QML veya tam tersi
- 23. QML ListView filtre öğeleri
- 24. QML Box2D Kur
- 25. QML Metindeki HTML biçimlendirmesi
- 26. QML - MouseArea - propagating onPositionChanged
- 27. apklib ve jar dosyaları arasındaki fark nedir?
- 28. Kaydırma QML Grid
- 29. Qml ve bulanık görüntü
- 30. angular.js içinde denetleyiciler arasında bir değişkeni paylaşma