У меня есть QTableView, который подключен к подклассу QAbstractTableModel. Я редактирование данных, принадлежащие модель в ответ на пользовательский ввод в другом элементе управления (не QTableView), а затем я вызов метода на модели, которая испускает dataChanged события:QTableView не отвечает на dataChanged, когда не сфокусирован
void CharacterModel::characterChanged(int idx)
{
emit dataChanged(index(idx, 0), index(idx, (int)kNumColumns));
}
Этих работает, пока фокусируется QTableView. Как только это не так, он больше не показывает обновленные данные. Если я снова сосредоточусь на нем, он немедленно обновится. Например, я изменил свой код, который вызывает вышеупомянутый метод, чтобы вызвать setFocus() в представлении таблицы сразу, и все в порядке - за исключением того, что мой контроль редактирования теряет фокус каждый раз, когда я что-то делаю. Не в порядке. У меня есть несколько элементов управления, в том числе спин-боксы; если я нажму на стрелку со стрелкой, появится FIRST-обновление (потому что табличное представление все еще сфокусировано), но затем прямая ячейка фокусируется, и все последующие изменения не отображаются.
У кого-нибудь есть идеи, что происходит? Это, по-видимому, очень четкое поведение, но я нигде не могу найти ссылки на него.
Спасибо, Аарон
Вы пытались вызвать 'update()' на свой 'QTableView' после того, как передан сигнал DataChanged? – vahancho
Пробовал - не имеет значения. – phrixus