Что вообще дает Qt::ItemIsTristate во флагах итема, если в результате приходится хаками обрабатывать setData для установки значения в Qt::PartiallyChecked;
Как будто по задумке именно если Qt::ItemIsTristate есть во флаге итема, то и должно в setData приходить не два а три возможных значения....
После того как у себя реализовал этот хак, убрал Qt::ItemIsTristate из флагов - ничего не изменилоь, как работало, так и работает
Qt::CheckState state = ( Qt::CheckState )( value.toInt() );
if ( ( state == Qt::Checked ) && ( m_ThreeStateRows[ nROW_ID ] != Qt::PartiallyChecked ) )
state = Qt::PartiallyChecked;
m_ThreeStateRows[ nROW_ID ] = state;
похоже на ошибку Qt