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:

    1. 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.
    2. 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);
    }
    @



  • 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?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.