#qt
#qt
Вопрос:
Я создаю небольшое приложение, представляющее список дел. Список хранится в модели cusom (производной от QAbstractItemModel) и отображается в QTableView.
У меня также есть пользовательский виджет (TaskDialog), который используется для просмотра и редактирования задач из списка. Дочерние элементы TaskDialog отображаются в модель с помощью QDataWidgetMMapper. В диалоговом окне задачи у меня также есть кнопки, которые позволяют просматривать все задачи в моем списке дел (QDataWidgetMapper::toPrevious() …).
Проблема в том, что если я редактирую задачу в TaskDialog (например, имя задачи), а затем перехожу к другой задаче, новый отредактированный объект не задается в модели. Но если я что-то редактирую в TaskDialog, то сначала переключаю фокус на другой дочерний виджет TaskDialog, а затем нажимаю одну из кнопок просмотра, после чего изменения записываются в модель.
Как я могу добиться того, чтобы виджеты, находящиеся в режиме редактирования, принимались и записывались в модель.
Я также попробовал пример QDataWidgetMapper от Nokia. Там это работает отлично. Но они используют QStandardItemModel.
С наилучшими пожеланиями, Люк
Ответ №1:
Я нашел решение: для политики отправки QDataWidgetMapper должно быть установлено значение QDataWidgetMapper::manuals submit. Затем всегда, когда я перехожу к новому элементу (т. Е. Нажата одна из кнопок просмотра), я отправляю изменения с помощью QDataWidgetMapper::submit() .