Rozważmy przypadek prostego GUI wyświetlającego wyniki dość skomplikowanych obliczeń.QML w aplikacji C++ lub odwrotnie
Teraz chciałbym napisać ładny, niestandardowy GUI, używając QML.
Chciałbym również napisać moją aplikację w tle w QT C++.
siedzę przed dokumentacji QT i zastanawiam gdybym
1) Należy napisać aplikację QML i jakoś osadzić moich klas C++ w nim (co jest absolutnie możliwe), czy ja
2) powinien napisać C++ aplikację i jakoś osadzić QML GUI w nim i modyfikowanie właściwości QML z moich klas (co jest znowu możliwe)
pisałem już wszystko w C++ przy użyciu QT widżety dla GUI. Chcę tylko przenieść GUI do QML i zachować klasy C++, mimo że jestem gotów przepisać interfejs GUI.
Możliwa anser:
Zaznaczony rozwiązanie poniżej sugeruje utrzymywanie klas C++ i interfejs GUI wyłącznie poprzez mechanizm sygnałów i slotów. Więc w zasadzie skończyło się z main.cpp że instancję mój główny klasę robotniczą i wyświetla GUI QML takiego:
QQuickView viewer;
viewer.setSource(QUrl("./qml/main.qml"));
viewer.show();
potem dodaną myClass i got me obiektu do zrobienia połączenia:
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 implementacji gniazd i sygnałów w klasach C++ należy użyć obiektów QVariant do przesłania danych. Plik QML następnie implementuje SIGNALS np. dla klikniętych przycisków i SZCZOTEK do odbioru danych do wyświetlenia.
To jest dokładnie to, na co miałem nadzieję. Jedyną zmianą w moim kodzie nie GUI było wykonanie wszystkich interakcji za pośrednictwem SYGNAŁÓW i SZTUR. Teraz mogę korzystać z obu GUI (QML/Widgets) dla mojej aplikacji.
Dodałem wyczerpującą odpowiedź. Wyjaśniłem również, dlaczego jest to dobre pytanie z cennym rozwiązaniem. – HWende
Powiązane: [Qt Designer C++ lub QML dla GUI] (http://stackoverflow.com/q/4610073/514235) – iammilind