ich habe ein problem mit dem letzten code ausschnitt, und zwar mit den flags. Wann wird das aufgerufen, überprüft bzw. benutzt oder sonstiges?
Könnte mir den ausschnitt bitte jemand etwas näher bringen? Ich habe den code aus den examples\itemviews\addressbook
Ich weiß das ich mit den flags das verhalten der zellen steuern kann, jedoch ist mir nicht klar wann was aufgerufen wird, bzw. wie ich das genau verwenden muss, weil ich z.b. nicht will, das alle zellen editierbar sind oder nur eine zelle eine checkbox hat usw.
Danke!
Code: Alles auswählen
QVariant TableModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (index.row() >= listOfPairs.size() || index.row() < 0)
return QVariant();
if (role == Qt::DisplayRole) {
QPair<QString, QString> pair = listOfPairs.at(index.row());
if (index.column() == 0)
return pair.first;
else if (index.column() == 1)
return pair.second;
}
return QVariant();
}
Code: Alles auswählen
bool TableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (index.isValid() && role == Qt::EditRole) {
int row = index.row();
QPair<QString, QString> p = listOfPairs.value(row);
if (index.column() == 0)
p.first = value.toString();
else if (index.column() == 1)
p.second = value.toString();
else
return false;
listOfPairs.replace(row, p);
emit(dataChanged(index, index));
return true;
}
return false;
}
Code: Alles auswählen
Qt::ItemFlags TableModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return Qt::ItemIsEnabled;
return QAbstractTableModel::flags(index) | Qt::ItemIsEditable;
}