Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Rendere una cella di TableView non editable



  • Vorrei sapere se esiste la maniera di rendere non editabile uno dei campi di un record all'interno di una tableview.
    Vi posto del codice di esempio.

     QSqlTableModel *model = new QSqlTableModel(this,db);
    
            model->setTable("Persona");
            model->setEditStrategy(QSqlTableModel::OnFieldChange);
    
            model->setHeaderData(0, Qt::Horizontal, tr("Id"));
            model->setHeaderData(1, Qt::Horizontal, tr("Nome"));
            model->setHeaderData(2, Qt::Horizontal, tr("Cognome"));
            model->setHeaderData(3, Qt::Horizontal, tr("Telefono"));
            model->setHeaderData(4, Qt::Horizontal, tr("Cellulare"));
            model->setHeaderData(5, Qt::Horizontal, tr("Fax"));
            model->setHeaderData(6, Qt::Horizontal, tr("Email"));
    
            model->select();
    

    Posso rendere non editabile i campi nome e conogme della seguente tabella?
    Grazie. Spero sappiate damri un consiglio



  • usa questa classe come proxy model

    // FlaggableProxy* flaggableProxy
    flaggableProxy->setSourceModel(model);
    for(int colIndex : {1,2} /*Colonne che non possono essere cambiate*/)
    flaggableProxy->setFlagForColumn(colIndex, flaggableProxy->flagForColumn(colIndex) & (~Qt::ItemIsEditable));
    

Log in to reply