Я пытаюсь реализовать структуру qTableView.
Вот часть моего кода:
m_model = new PatientModel(this); //This is my QAbstractTableModel subclass
m_proxy = new QSortFilterProxyModel(this);
m_proxy->setSourceModel(m_model);
Чтобы добавить строку, я говорю (я хочу отобразить объекты пациента):
void PatientModel::append(Patient* patient) {
beginInsertRows(QModelIndex(), m_data.count(), m_data.count());
m_data.append(patient);
endInsertRows();
}
Что отлично работает.Строка добавляется в представление и данные (m_data - это QList
. Чтобы удалить строку, я попробовал несколько вещей, на данный момент у меня есть
bool PatientModel::removeRows(int row, int count, const QModelIndex &parent)
{
Q_UNUSED(parent);
this->layoutAboutToBeChanged();
beginRemoveRows(QModelIndex(), row, row+count-1);
m_data.removeAt(row);
endInsertRows();
this->layoutChanged(); //force refresh, keine Ahnung
return true;
}
. Я добавил layoutAboutTobeChanged.() и layoutChanged () после некоторого исследования. До добавления этих 2 строк после удаления была пустая строка. Теперь нет, но когда я удаляю, например, строку 3, я больше не могу сначала нажать на строку 3+ или приложение.вылетает со следующим сообщением об ошибке:
QSortFilterProxyModel: index from wrong model passed to mapFromSource
Segmentation fault: 11
Есть ли что-то, что я делаю не так?
Заранее спасибо!