Model View Programming
-
Hallo
Ich habe in einer Zelle eines QTableView eine ComboBox als Editor und dafür ein Delegate gemacht.
Die unten stehende Methode setModelData wird auch aufgerufen.
Allerdings für alle Spalten.
Folgende Probleme tauchen auf:- Obwohl ich im Debugger sehe, dass es sich bei dem model um mein Model handelt wird die dort implementierte setModelData - Methode nicht aufgerufen.
Das Model ist abgeleitet von QAbstractItemModel. - Da die Methode für alle Spalten aufgerufen wird habe ich den Aufruf für alle anderen Spalten an QItemDelegate::setModelData(...) weitergeleitet. Aber auch für diese Daten wird mein Model nicht aufgerufen.
Was ist da falsch?
@
void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
QComboBox comboBox = static_cast<QComboBox>(editor);
if (index.column() == ToolTableModel::Col_ToolSenseOfDirection)
{
model->setData(index, comboBox->currentIndex(), Qt::EditRole);
}
QItemDelegate::setModelData(editor,model,index);
}
@ - Obwohl ich im Debugger sehe, dass es sich bei dem model um mein Model handelt wird die dort implementierte setModelData - Methode nicht aufgerufen.
-
Hallo,
Da gibt es ein weiteres Problem. Diesmal in dem Model selbst:
Folgende Deklaration habe ich dort für setData:
@
bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) const;
@
Nun ist überall dokumentiert, dass setData das signal "dataCanged" aufrufen soll.
Damit kommt der Compiler aber überhaupt nicht klar:error C2662: 'QAbstractItemModel::dataChanged': this-Zeiger kann nicht von 'const EditToolTableModel' in 'QAbstractItemModel &' konvertiert werden
Was ist da nicht in Ordnung?