2009-12-04 9 views

Répondre

3

Je crois que vous auriez besoin de sous-classe QStandardItemModel; Remplacez la méthode flags et renvoyez Qt :: ItemIsUserCheckable avec d'autres indicateurs pour la colonne avec des cases à cocher. Voici un exemple:

class TableModel : public QStandardItemModel 
{ 
public: 
    TableModel(); 
    virtual Qt::ItemFlags flags (const QModelIndex & index) const; 
}; 

TableModel::TableModel() 
{ 
    //??? 
} 

Qt::ItemFlags TableModel::flags (const QModelIndex & index) const 
{ 
    Qt::ItemFlags result = QStandardItemModel::flags(index); 
    if (index.column()==1) result |= Qt::ItemIsUserCheckable; 
    return result; 
} 

voici comment je contrôle: Initialisation

QStandardItemModel* tableModel = new TableModel(); 
// add columns 
tableModel->insertColumn(0, QModelIndex()); 
tableModel->insertColumn(1, QModelIndex()); 
// add rows 
tableModel->insertRows(0, 1, QModelIndex()); 
tableModel->insertRows(1, 1, QModelIndex()); 
// set text item 
QModelIndex index0 = tableModel->index(0, 0, QModelIndex()); 
tableModel->setData(index0, QVariant("test item"), Qt::EditRole); 
// set checkbox item 
QModelIndex index1 = tableModel->index(0, 1, QModelIndex()); 
tableModel->setData(index1, QVariant(Qt::Checked), Qt::CheckStateRole); 

ui->tableView->setModel(tableModel); 

espérons que cette aide, considère