Как обновить представление при изменении источника данных модели?

У меня есть класс, который наследует от QAbstractTableModel, который просто указывает на отдельный класс для представлений для доступа к информации о данных следующим образом:

    #include "QAbstractTableModel"class MyModel : public QAbstractTableModel
{
Q_OBJECT
public:
MyModel(QObject* parent = 0) {}

void setDataSet(std::shared_ptr<dataset> dataset) {
beginResetModel();
dataset_ = dataset;
endResetModel();
}

int rowCount(const QModelIndex &parent) const { return dataset_->rowCount(); }

int columnCount(const QModelIndex &parent) const { return dataset_->colCount(); }

QVariant data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole) {
return dataset_->data( index.row(), index.column() );
}
return QVariant();
}

private:
std::shared_ptr<DataSet> dataset_;
};

Базовый набор данных будет часто меняться, и поэтому мне нужна модель, чтобы сказать представлению, что ему нужно полностью перерисовать себя. Набор данных может иметь разные столбцы, строки, записи и т. Д.

Вышеприведенное работает только тогда, когда количество столбцов отличается от предыдущего набора данных, в противном случае таблица продолжает отображать данные из ранее.

Есть что-то другое, что я должен сделать здесь? Все остальные источники указывают на вышеуказанные призывы к beginResetModel() а также endResetModel(), но это не работает. Эти вызовы должны сообщать всем представлениям, что им нужно перерисовать. Я думал о dataChanged(), но это выглядит как странный обходной путь (я мог бы иметь больше столбцов, чем предыдущий набор данных) для сброса представления.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]