Solved Tecnica consigliata per esporre a video i dati di una matrice presente in un'altra classe
-
Buonasera. Rieccomi con un altro problema.
Ho una classe che definisce una matrice di interi. All'interno della classe ho realizzato i metodi per assegnare i valori ai vari elementi della matrice. Poi alcuni dati di questa matrice devono essere esposti a video. Ho quindi un'altra classe tipo form con i campi che dovrebbero acquisire i giusti valori della matrice. Ho usato la tecnica di valorizzare i campi ui col riferimento all'istanza della classe matrice. Evidentemente questa tecnica non è corretta, dato che ho appurato che nella matrice i valori vengono calcolati correttamenti, ma a video riporta dati sballati. Quale tecnica si dovrebbe utilizzare per acquisire valori presenti su un'altra classe ? -
@bvox123 said in Tecnica consigliata per esporre a video i dati di una matrice presente in un'altra classe:
Ho una classe che definisce una matrice di interi
Hai bisongo di copy-constructor (
MiaClasse(const MiaClasse& other);
) e/o assignment operator (MiaClasse& operator=(const MiaClasse& other);
) per questa classe? -
Non capisco la domanda. Vorrei utilizzare il metodo più logico e coerente col c++. Credevo di avere operato correttamente, ma il risultato mi dice di no. Come si fa a collegare la classe matrice alla classe form_valori_di_matrice ?
-
Il metodo corretto e' far ereditare QObject alla tua classe ma questo ti preclude l'uso della copia. se quello rappresenta un problema bisogna usare un "contenitore" nella forma di QObject. Da qui la mia domanda
-
Scusa il ritardo: impegnato nel ruolo di nonno-babysitter.
Vediamo se ho capito bene. Facendo derivare sia la classe matrice che la classe form_valori da QObject si crea una sorta di collegamento fra le due classi ? E' Così che bisogna operare ? -
Ho trovato l'errore: ovviamente errore mio e non delle classi. Perdonate la mia irrazionalità.
-
@bvox123 said in Tecnica consigliata per esporre a video i dati di una matrice presente in un'altra classe:
QObject si crea una sorta di collegamento fra le due classi ? E' Così che bisogna operare ?
QObject permette di emettere segnali e puoi usarli per fare property binding:
class ClassA : public QObject{ Q_OBJECT Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) Q_DISABLE_COPY(ClassA) public: ClassA(QObject* parent=Q_NULLPTR) : QObject(parent), m_value(0){} int value() const {return m_value;} void setValue(int val){ if(m_value==val) return; m_value = val; emit valueChanged(m_value); } Q_SIGNAL void valueChanged(int); private: int m_value; }
ora puoi connettere uno slot a
valueChanged
per aggiornare la GUI o usarlo direttamente in QML come una proprieta' (se usi QtQuick)