QSqlRelationalModel come aggiungere 3 colonne con dati da altra tabella



  • Salve a tutti potreste darmi uno snippet funzionante per aggiungere le colonne in una QTableView? Lavoro su 4.7
    La mia situazione è questa : ho implementato una classe widget contenente una QTableView caricando i dati da db MySQL tramite QSqlRelationalModel e fin qui funziona tutto alla perfezione in estrazione e aggiornamento dati db tramite QDataWidgetMapper. Mi sono accorto in seguito di dover far visualizzare all'utente anche altri 3 campi di una table clienti (ragione sociale, cognome, nome) in relazione alla table principale del mio modello tramite il codice cliente.
    Visto che la relation non permette i legami 1 a N (non posso utilizzare il cod cliente per mostrare in contemporanea anche rag. Soc., cognome, nome) ho provato quindi con

    -un QSortFilterProxyModel con override sui metodi data, columnCount, flags intercettando l'indice delle mie nuove 3 colonne
    -setSourceModel per legarlo al mio modello base funzionante (QSqlRelationalModel)
    -chiamata al metodo insertColumns(3,3) del proxy che ritorna sempre true

    ma senza avere alcun effetto e non vedendo mai comparire le colonne! Non ho errori.

    Qualcuno mi può dare una mano? Non ho trovato da nessuna parte un esempio funzionante di un subclass su QSortFilterProxyModel che gestisca l'inserimento di colonne...

    Se aggiungo 3 al column count (override al metodo columnCount) mi compaiono 3 nuove colonne ma ovviamente in coda alla lista e a me servirebbe inserirle tra quelle preesistenti.
    Altre soluzioni sono bene accette se non devo riscrivere tutto :)

    Grazie in anticipo!



  • Io non ho ben capito per quale motivo le due tabelle non possono essere messe in relazione. Io non ho mai usato il proxy, ma se puoi fare una query che ti mostri le colonne allora il relational model dovrebbe riuscire a mostrarti tutto senza problemi.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.