Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    166

    [Qt - C++] - Model-view

    Sto seguendo https://doc.qt.io/qt-5/modelview.html per capire il meccanismo.
    Sono arrivato al "2.5 The Minimal Editing Example".
    Non mi sono chiare due cose, e non trovo esempi a riguardo che mi aiutino a chiarirmi le idee:
    • in tutti gli esempi, i dati da "passare" alla view vengono generati col costruttore del model. Ma se dovessi avere una classe precedentemente implementata, ad esempio MiaClasse che al suo interno ha una matrice che deve essere rappresentata in una tableview, qual e' il modo migliore di creare la classe model? Mi vengono in mente tre strade:
    • quando creo l'istanza del model, al costruttore (del model), passo un copia dei dati da rappresentare con la view;
    • nel model, memorizzo un puntatore a MiaClasse;
    • derivo la classe model sia da MiaClasse che da una delle piu' appropriate classi model di Qt;
    • come comportarsi nel caso di dati modificabili dall'utente, ma lasciando la possibilita' di non salvare le modifiche ai dati. Il metodo setData da reimplementare nella classe model modifica i dati all'istante, ma io vorrei avere la possibilita' della classica domanda "si vogliono salvare le modifiche effettuate?". Se si allora modifico i dati di MiaClasse, altrimenti lascio tutto come in origine.

    Spero di esser stato sufficientemente chiaro e ringrazio in anticipo.

  2. #2
    Ciao, nella cartella Examples dell'installato Qt trovi numerosi esempi.
    Ad ogni modo se devi creare un albero oppure una tabella hai 2 tipi di componenti: QTreeWidget / QTableWidget oppure QTreeView / QTableView.
    Nel primo caso se vuoi inserire un campo che accetti un valore numerico usando QSpinBox lo devi creare e collocare nella cella corretta per mezzo di setWidget.
    Nel secondo caso invece una volta che si clicca sulla cella si esegue in rendering in base al tipo di dato dichiarato. Per cui l'albero o tabella accetta un valore stringa che come si fa il click viene editato in base al tipo.
    Nel primo caso graficamente è più bello ma molto lento, nel secondo caso anche se crei una tabella con decine di migliaia di righe comunque in programma non diventa troppo lento.
    Come vedi per implementare la classe devi decidere che approccio vuoi usare.
    Sito ufficiale per info https://forum.qt.io/

  3. #3
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    166
    Grazie, nel frattempo ho trovato questo, che rispecchia all'incirca il mio caso, cio� come far integire il model "col resto del programma".



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.