в доках четко написано:
beginRemoveRows():
Note: This function emits the rowsAboutToBeRemoved() signal which connected views (or proxies) must handle before the data is removed. Otherwise, the views may end up in an invalid state.
так же и в endRemoveRows()
you must call this function after removing data from the model's underlying data store.
приходится писать вот такой вот код:
emit serv->sg_beginRemoveRow(1, i, pThis);
m_childItems.remove(i);
emit serv->sg_endRemovRow();
если раскрыть эти слоты, то там в первом begin в конце end
почему нельзя вот такое вот:
emit serv->sg_beginRemoveRow(1, i, pThis);
emit serv->sg_endRemovRow();
m_childItems.remove(i);
то есть вначале удалить индекс в модели а затем из своей структуры.
Не очень понятно, что у Вас за сигналы такие sg_beginRemoveRow, sg_endRemovRow. Методы beginInsertRows, endInsertRows должны вызывается в Вашем классе-модели, наследнике QAbstractTableModel или подобном, для того они и сделаны protected.
Правильное использование можно посмотреть в примерах qt abstractitemmodel или adressbook
endRemoveRows дает понять отображению, что изменились какие-то данные, и для указанных строк нужно перечитать данные из модели, вызовом метода data. Если вы данные из модели будет удалять "после", то будете в view получать устаревшие значения.
Потому что предполагается, что между вызовами begin*
и end*
модель может находиться в некорректном состоянии. Это у вас контейнер и все, но бывают модели очень сложные когда нужно и в сеть и в базу сходить, что-то преобразовать... Так вот технически бывает сложно сделать это все за один вызов функции. И еще не забывайте, что модель в Qt это не только списки/таблицы, это еще деревья.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При select в QSqlTableModel не вызывается сигнал rowsInsertedИ вызывается только тогда когда добавляется строка через insertRow
Как заставить QLabel выделять url в (не статичном) тексте и открывать их в браузере? Вот код для примера:
Как отсортировать объекты по инициалам? Те когда я буду заполнять массив объектов, хочу чтобы они выводились не в порядке заполнения, а по алфавитному...
Уже несколько раз устанавливал Android Studio, но не могу понять в чем проблемаВ окне, где должны быть обозначены компоненты нет необходимого мне...