使用QTableView單元格編輯功能時,遇到了以下問題:
重載Qt::ItemFlags flag(const QModelIndex & index) const函數,來指定單元格屬性為可編輯狀態,
Qt::ItemFlags dataModel::flags(const QModelIndex& index) const { return Qt::ItemIsEditable | QAbstractTableModel::flags(index); }
結果為,雙擊可編輯,但單元格內容置空,未修改退出編輯狀態,內容變為0。
應該這樣修改,即可雙擊單元格進入編輯狀態,內容處於被選中狀態,
QVariant dataModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role == Qt::TextAlignmentRole) { return int(Qt::AlignRight | Qt::AlignVCenter); } else if (role == Qt::DisplayRole || role == Qt::EditRole) //就是這個地方 { switch ( index.column() ) { //to do ... } } return QVariant(); }