QML w aplikacji C ++ lub odwrotnie [zamknięte]

Rozważmy przypadek prostego graficznego interfejsu użytkownika wyświetlającego wynik dość skomplikowanego obliczenia.

Teraz chciałbym napisać miły, niestandardowy GUIQML.
Chciałbym także napisać swoją aplikację w tleQT C ++.

Siedzę przed dokumentacją QT i zastanawiam się, czy ja
1) powinien napisaćAplikacja QML i jakoś osadzam w niej moje klasy C ++ (co jest absolutnie możliwe) lub jeśli ja
2) powinien napisaćAplikacja C ++ i jakoś osadzić w nim GUI QML i zmodyfikować właściwości QML z moich klas (co jest możliwe ponownie)

Wszystko napisałem już w C ++ za pomocą widgetów QT dla GUI. Chcę tylko przenieść GUI do QML i zachować klasy C ++, chociaż jestem gotów przepisać interfejs do GUI.

Możliwy anser:

Zaznaczone rozwiązanie poniżej sugerowało zachowanie klas C ++ i interfejs GUI wyłącznie za pośrednictwem SYGNAŁÓW i GNIAZD. Więc w zasadzie skończyło się na main.cpp, który tworzy instancję mojej głównej klasy roboczej i wyświetla GUI QML w ten sposób:

QQuickView viewer;
viewer.setSource(QUrl("./qml/main.qml"));
viewer.show();

potem dodałem myClass i otrzymałem obiekt do wykonywania połączeń:

MyClass myClass;
QQuickItem* item = viewer.rootObject();
QObject::connect(item, SIGNAL(buttonClicked()), &myClass, SLOT(mySlot()));
QObject::connect(&myClass, SIGNAL(mySignal(QVariant)), item, SLOT(updateGUI(QVariant)));

Podczas implementowania gniazd i sygnałów w klasach C ++, do przesyłania danych należy użyć obiektów QVariant. Następnie plik QML implementuje SYGNAŁY, np. dla klikniętych przycisków i SLOTÓW, aby odbierać dane do wyświetlenia.

Właśnie tego miałem nadzieję. Jedyną zmianą w moim kodzie nie GUI było wykonanie wszystkich interakcji za pomocą SYGNAŁÓW i GNIAZD. Teraz mogę nawet używać obu GUI (QML / Widgets) dla mojej aplikacji.

questionAnswers(2)

yourAnswerToTheQuestion