Connessioni a run-time
-
Ciao a tutti,
sono nuovo nel forum e conosco poco del Qt Framework.
Sto leggendo un pò di tutorial, ho acquistato dei libri, etc...
Sono un programmatore Delphi da diversi anni ma sto cercando di passare al C++ per diversi motivi... multipiattaforma, performance, GUI fantastiche, librerie esterne fatte in C++, etc...Venendo alla mia domanda, c'è modo di recuperare a run-time delle informazioni su un oggetto istanziato?
RTTI o qualcosa del genere in QT?Quello che vorrei realizzare è qualcosa del genere:
...ovvero dei tools (box) che hanno dei pin d'ingresso e pin di uscita e se sono "compatibili" possono essere collegati tra loro.
Per fare ciò a run-time il programma deve girare su tutti i pins degli items (box) presenti e verificare la compatibilità dei pins. (Es: Integer <--> Integer).Ringrazio in anticipo e ovviamente ogni suggerimento / dritta saranno ben accetti!
-
Nello specifico, nell'applicazione in Delphi che avevo realizzato le utilizzavo per andare a leggere gli attributi sulle property ed altro... Tuttavia, venendo a QT, avete qualche dritta, qualche spunto o esempio da cui partire?
Grazie, ogni suggerimento è ben accetto. -
Quelli sono widgets*, ogni widget* avra' cura di controllare cosa puo' connettersi a cosa. Non e' chiaro perche' tu voglia una generica interfaccia che gestisca le proprieta', quelle sono specifiche della subclass, non devi fare cose strane utilizzando QVariant o Q_PROPERTY.
*widget in senso lato. dall'immagine potrebbero anche essere QGraphicsItem
-
Grazie @vronin ,
dalle tue risposte mi rendo conto di non aver descritto cosa ho in mente. Ci provo...
Quei widgets* (che da ora chiamo tools) sono delle classi che svolgono un determinato compito.Es:
Tool Pattern Matching
Tool Canny Filter
Tool Misura Distanza tra 2 Punti
Tool Misura Cerchio
Tool DatamatrixIn ingresso ricevono dei dati (solitamente un'immagine) ed in uscita generano un risultato (un valore, una coordinata x,y, un'immagine elaborata, etc...).
Il software che voglio realizzare avrà una lista di questi tools, l'utente dovrà sceglierli e collegarli tra di loro per ottenere un risultato finale che a seconda dei parametri dirà se l'immagine in input è buona o di scarto.
Es: il Tool Datamatrix avrà il compito di leggere e verificare con una stringa campione il risultato, se uguale l'immagine sarà buona altrimenti di scarto.Assolutamente si, graficamente i Tools li vedo come dei QGraphicsItems perchè da quanto ho visto negli esempi le classi QGraphicsView / Scene sembrano quello che cerco.
Tu che ne dici?Infine, a livello di codice, ho dei dubbi su come implementare i "pin" di connessione tra i tools.
Potrebbe essere corretto fare delle sotto classi PinInput<T> e PinOutput<T> ?
Oppure invece di utilizzare i generics vi viene in mente qualche altra modalità in QT?
Signal e Slot?Grazie per la pazienza e per il supporto.
-
@addebito said in Connessioni a run-time:
classi QGraphicsView / Scene sembrano quello che cerco.
Tu che ne dici?Concordo
Potrebbe essere corretto fare delle sotto classi PinInput<T> e PinOutput<T>
No, il mio punto e' proprio questo, il pin non e' un oggetto allo stesso livello dei tools. E' parte del tool stesso. Sta al tool disegnarli e gestire i click sulle diverse parti. Il tool sapra' sempre a cosa puo' collegarsi. Per esempio: clickly su un pin di un tool che accetta stringhe, il tool manda il tipo al suo controllere (
QMetaType::QString
) e lui lo salva in una variabile, poi clickly sul pin di un altro tool e il controller gli manda il tipo. Se e' compatibile il tool dira' al controller di completare il collegamento.