Jestem nowy w kodowaniu w QML i próbuję napisać moją pierwszą aplikację Sailfish OS. Dla zaplecza utworzyłem jedną klasę C++. Jednak chcę utworzyć instancję jednego obiektu z tej klasy C++ i użyć go zarówno na okładce, jak i na stronie głównej (dwa oddzielne pliki QML), dzięki czemu mogę pracować z tymi samymi danymi przechowywanymi w tej klasie. Jak adresuje ten sam obiekt w oddzielnych plikach QML?Udostępnianie obiektu między plikami QML
5
A
Odpowiedz
7
Można dokonać przedmiot dostępny w kontekście QtQuick:
class MySharedObject : public QObject {
Q_OBJECT
public:
MySharedObject(QObject * p = 0) : QObject(p) {}
public slots:
QString mySharedSlot() { return "blablabla"; }
};
w main.cpp
MySharedObject obj;
view.rootContext()->setContextProperty("sharedObject", &obj);
iz dowolnego miejsca w QML:
console.log(sharedObject.mySharedSlot())
jeśli nie” Jeśli chcesz mieć to "globalnie" w QML, możesz zrobić trochę, by je enkapsulować, po prostu stwórz inną pochodną QObject
ed klasy, zarejestruj ją, aby utworzyć instancję w QML i mieć właściwość, która zwraca wskaźnik do tej instancji obiektu, w ten sposób będzie dostępna tylko wtedy, gdy utworzysz obiekt QML "accessor".
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
};
w main.cpp
MySharedObject obj;
qRegisterMetaType<MySharedObject*>();
SharedObjAccessor::setSharedObject(&obj);
qmlRegisterType<SharedObjAccessor>("Test", 1, 0, "SharedObjAccessor");
aw QML
import Test 1.0
...
SharedObjAccessor {
id: acc
}
...
console.log(acc.sharedObject.mySharedSlot())
Powiązane problemy
- 1. Udostępnianie zmiennych między plikami Makefile
- 2. Udostępnianie miksów między plikami scss w szynach 3.1
- 3. Udostępnianie sceny między wieloma plikami scenorysów. iPhone vs iPad
- 4. Udostępnianie modelu między wieloma plikami edmx (Entity Framework 4.0)
- 5. Udostępnianie obiektu między pracownikami Gunicorn lub utrzymywanie obiektu wewnątrz pracownika
- 6. Udostępnianie pamięci między modułami
- 7. Udostępnianie obiektu między dwoma wątkami i głównym programem
- 8. Rozszerzenie chrome: udostępnianie obiektu między skryptami treści a skryptem tła
- 9. Udostępnianie danych między JVM
- 10. Udostępnianie kodu między fragmentami
- 11. Udostępnianie zmiennej między procesami
- 12. QML: Nawigacja między stronami qml od percepcji projektu
- 13. Vim: tworzenie znaczników między plikami?
- 14. Używanie zmiennych globalnych między plikami?
- 15. Znajdowanie zależności między plikami Makefile
- 16. Przesyłanie danych między plikami wykonywalnymi
- 17. Hive - dzielenie danych między plikami
- 18. Udostępnianie danych między notebookami IPython
- 19. Udostępnianie blokady między pracownikami gunicorn
- 20. Udostępnianie obiektów domeny między działaniami
- 21. Udostępnianie danych między kontrolkami użytkownika
- 22. Udostępnianie Mongoose instancji między wieloma KMP pakiety
- 23. git diff między dwoma różnymi plikami
- 24. Użyj zmiennych SESSIONS między różnymi plikami php.
- 25. Różnica procentowa między dwoma plikami tekstowymi
- 26. Jak udostępnić zmienne między różnymi importowanymi plikami?
- 27. Javascript: Zakres zmiennej między różnymi plikami JavaScript
- 28. Różnica między łatkami i plikami różnic
- 29. Udostępnianie zmiennych między modułami w JavaScript/node.js?
- 30. Udostępnianie kodu modelu między Sinatra i Railsami