1

QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) を再実装する場合、無視したいロールについてはどうすればよいですか? false を返すか true を返すか?

Qt ドキュメントの例は、ここでは自己矛盾しています。戻り値は false http://qt-project.org/doc/qt-4.8/model-view-programming.html#making-the-model-editable ですが、ここでは戻り値は true http://qt-project.org/doc/qt-4.8/modelview.html#2-5-the-minimal-editing-example

4

1 に答える 1

1

このロールにデータを設定するのはエラーであり、それを回避したい場合は、false を返すことができます。

このデータの役割を無視したい場合は true を返すことができますが、試す必要はありません (ただし、警告を出力する必要があります)。

このようにして、setData() の動作を「壊す」ことはありません (false: 何か問題があります。true: 大丈夫です。続行できます)。

ユーザーはブール値を待機するため、奇妙な動作を避けるために他のものを返すべきではありません。たとえば、ブール値である必要がある戻り値をテストする場合:

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

setData() が True を返さなくても、bar() が呼び出されます。

于 2013-04-09T12:57:28.407 に答える