Planned maintenance: From Sunday 8th December 10:00 CET there will be changes to try and solve the caching issues that have been experienced. If anyone has a problem connecting after this period then please PM @AndyS or any of the moderators.

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:
    alt text
    ...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!


  • Qt Champions 2018

    Il link non funziona quindi e' difficile capire esattamente cosa ti serve



  • Perdonami @vronin, hai ragione.
    E' uno screenshot di blender.

    0_1568390101299_01.png


  • Qt Champions 2018

    Non mi e' chiaro perche ti dovrebbe servire RTTI per una cosa come questa. e' perfettamente gestibile dai singoli oggetti senza dover aprire il cofano al linguaggio stesso



  • 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.



  • Buongiorno,

    davvero nessuno ha qualche spunto su dove/come partire ??!?
    @vronin ?

    Grazie in anticipo.


  • Qt Champions 2018

    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 Datamatrix

    In 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.


  • Qt Champions 2018

    @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.



  • @VRonin Grazie del tempo dedicatomi, ora ho un punto di partenza.


Log in to reply