Ответ, на который вы ссылаетесь, в лучшем случае сбивает с толку и, вероятно, неверен.
Код вашей модели должен излучать сигнал dataChanged
для любого прямоугольника ячеек, в котором изменились данные, возвращаемые методом модели data
,См., Например, этот вопрос и ответ, в котором есть некоторые детали.
Обратите внимание, что параметры в сигнале dataChanged
не должны быть родительскими и дочерними - они должны быть "topLeft"и" bottomRight ".Они должны иметь одного и того же родителя, а также быть разными.Таким образом, вам не нужно перебирать строки и генерировать сигнал для каждой строки.Вы можете отправить комбинированный сигнал для всех строк, которые изменились.
Но вам нужно отправить сигнал для каждого родителя (где изменились данные), который сигнализирует верхнюю левую ячейку и нижнюю правую ячейку для этого родителя,Таким образом, вы можете в конечном итоге создать индекс для верхней левой ячейки для этого родителя в (0, 0, parent)
и другой для нижней правой ячейки в (rows, cols, parent)
, а затем отправить сигнал для этой пары индексов.