Я пытаюсь создать полностью общую связь между QML TableView
и моим классом C ++, который подклассов QAbstractTableModel
. До сих пор я могу читать данные с помощью метода data
, так как это выполняется внутри модуля TableView
. Однако из того, что я прочитал в SO, мне нужно позвонить setData
на стороне QML. Проблема в том, что заголовок функции выглядит следующим образом:
bool setData(const QModelIndex &index,
const QVariant &value,
int role = Qt::EditRole) override;
Чтобы вызвать его, мне нужен QModelIndex
, который я не знаю, как получить на стороне QML. Буду признателен за пример QML.
Редактировать: я обошел эту проблему, обернув setData
следующим образом:
Q_INVOKABLE bool setData(const int row,
const int column,
const QVariant& value);
bool CVarTableModel::setData(const int row,
const int column,
const QVariant& value)
{
return setData(index(row, column), value);
}
Теперь я могу вызвать его прямо на стороне QML. Проблема в том, что хотя фактический setData
вызывается сейчас, сигнал dataChanged
не заставляет QML TableView
обновить ячейку ... Есть ли что-то еще, что мне не хватает?