2013-04-09 3 views
0

когда переописать QAbstractItemModel :: УстановитьДанный (Const QModelIndex & индекса, Const QVariant & значения, внутр роль = Qt :: EditRole) за роли, которые мы хотим игнорировать, какой мы должны делать? вернуть false или вернуть true? Или что-нибудь еще?возвращаемого значение QAbstractItemModel :: УстановитьДанное()

примеры в документации Qt даже внутренне противоречивым здесь возвращаемое значение является ложным http://qt-project.org/doc/qt-4.8/model-view-programming.html#making-the-model-editable но здесь возвращаемое значение истинно http://qt-project.org/doc/qt-4.8/modelview.html#2-5-the-minimal-editing-example

ответ

0

Вы можете вернуться ложным, если вы считаете, что это ошибка, чтобы установить данных для этой роли, и вы хотите этого избежать.

Вы можете вернуть true, если хотите проигнорировать эту роль данных, но не критично пытаться (но вы должны печатать предупреждение).

Таким образом, вы не «ломаете» поведение setData() (false: есть что-то неправильно, true: это нормально, вы можете продолжить).

Вы не должны возвращать что-либо еще, чтобы избежать странного поведения, потому что пользователь будет ждать логического. Например, если вы проверить возвращаемое значение, которое должно быть логическое значение:

if setData("test", Qt.DisplayRole) == False: 
    foo() 
else: 
    bar() 

бар() будет вызываться, даже если УстановитьДанные() не возвращает значение True.