В QAbstractItemModel некоторые функции, такие как beginInsertRows, beginRemoveRows, могут использоваться для вставки и удаления строк. Но как реализовать замену элемента строки другим?Как заменить строку в QAbstractItemModel?
ответ
Если я правильно Вас понял, что вам нужно уведомить subcribed взгляды на изменения данных (одна строка заменяется на новый, для представлений это означает, что данные были изменены) для указанного индекса модели:
// let's the row is index that we want to invalidate
QVector<int> roles;
roles << Qt::DisplayRole;
emit dataChanged(index(row, 0), index(row, columnCount()-1), roles);
Я пробовал, но иногда это не работает правильно. В настоящее время я выдаю сигнал 'layoutChanged()'. Это работает, но мне интересно, дорого ли это. – user1899020
Можете ли вы объяснить, что не работает? – AnatolyS
У меня есть родительский узел. Я меняю его на другой родительский узел с разными детьми. А затем испустите сигнал dataChanged с первым индексом в качестве родителя и последним индексом в качестве последнего дочернего элемента родителя. Я также пытаюсь установить первый и последний индексы такими же, как и родительский. Оба не работают. Благодарю. – user1899020
Если вы хотите изменить много данных, вы должны сделать что-то вроде этого:
beginResetModel();
// change data
endResetModel();
Если изменить только одну строку, испуская dataChanged() следует сделать трюк.
- 1. Как использовать QAbstractItemModel?
- 2. Как установить QCheckBox в QAbstractItemModel?
- 3. QAbstractItemModel в QGraphicsView
- 4. заменить строку в строку Глоток заменить
- 5. Как заменить строку на строку в Swift?
- 6. Как заменить строку в awk, содержащей строку?
- 7. Как выглядит представление QAbstractItemModel Tree?
- 8. Как заменить строку в Groovy
- 9. Как заменить строку в XSLT?
- 10. Как заменить строку в Python
- 11. Как заменить строку в файле?
- 12. Как заменить строку в NSMutableAttributedString?
- 13. Как заменить строку в java?
- 14. Как заменить строку в xslt
- 15. как заменить строку в php
- 16. Как заменить строку в bash
- 17. Как заменить строку в jsp
- 18. Как заменить строку в vb.net
- 19. Как заменить строку в sed?
- 20. Как заменить строку в блоке
- 21. Как заменить строку в javascript?
- 22. Как заменить строку в таблице
- 23. Заменить строку в строку XML
- 24. Как правильно заменить строку
- 25. Как заменить строку
- 26. XSLT: Как заменить строку
- 27. Как заменить строку тегами
- 28. Как точно заменить строку
- 29. Как заменить строку переменной?
- 30. Как заменить строку url
Кажется, что замена - это просто удаление, за которым следует вставка. – Chris
Этот способ работает, но я думаю, что должен быть лучший способ. – user1899020
также удалять + вставка, конечно, потеряет выделение и расширенное состояние (для дерева) – barjak