Considerare il caso di una semplice GUI che visualizza l'output di un calcolo piuttosto elaborato.QML nell'app C++ o viceversa
Ora mi piacerebbe scrivere una bella interfaccia utente personalizzata utilizzando QML.
Vorrei anche scrivere la mia app in background in QT C++.
Sono seduto davanti alla documentazione di QT e mi chiedo se
1) deve scrivere un'applicazione QML e in qualche modo incorporare le classi C++ in esso (che è assolutamente possibile) o se io
2) deve scrivere un applicazione C++ e in qualche modo incorporare la GUI QML in esso e modificare le proprietà QML dalle mie classi (che è di nuovo possibile)
ho già scritto tutto in C++ utilizzando QT Widget per la GUI. Voglio solo spostare la GUI in QML e mantenere le classi C++ anche se sono disposto a riscrivere l'interfaccia sulla GUI.
Possibile Anser:
La soluzione marcata sotto suggerito mantenere il C++ le classi e l'interfaccia GUI esclusivamente attraverso segnali e slot. Quindi, in pratica ho finito con un main.cpp che crea un'istanza mia classe principale di lavoro e visualizza l'interfaccia grafica QML come questo:
QQuickView viewer;
viewer.setSource(QUrl("./qml/main.qml"));
viewer.show();
poi ho aggiunto myClass e mi ha fatto un oggetto per fare i collegamenti:
MyClass myClass;
QQuickItem* item = viewer.rootObject();
QObject::connect(item, SIGNAL(buttonClicked()), &myClass, SLOT(mySlot()));
QObject::connect(&myClass, SIGNAL(mySignal(QVariant)), item, SLOT(updateGUI(QVariant)));
Quando si implementano gli slot e i segnali nelle classi C++, è necessario utilizzare oggetti QVariant per trasferire i dati. Il file QML implementa quindi SIGNALS, ad es. per i pulsanti cliccati e SLOT per ricevere i dati da visualizzare.
Questo è esattamente quello che speravo. L'unica modifica al mio codice non GUI era di fare tutte le interazioni tramite SEGNALI e SLOT. Ora posso persino usare entrambe le GUI (QML/Widget) per la mia applicazione.
Ho aggiunto una risposta completa. Ho anche spiegato perché questa è una buona domanda con una soluzione valida. – HWende
Correlati: [Qt Designer C++ o QML per GUI] (http://stackoverflow.com/q/4610073/514235) – iammilind