2009-12-04 34 views

回答

3

我相信你需要繼承QStandardItemModel;覆蓋標誌方法並返回Qt :: ItemIsUserCheckable以及帶有複選框的列的其他標誌。下面是一個例子:

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; 
} 

這裏的我是如何初始化控制:

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); 

希望這會有所幫助,至於

相關問題